|
Увод в програмирането
alpha
|
До тук можем да подаваме масиви на функци по следния начин:
void f(int i, int a[] )
{
// Some code goes in here.....
}
void main()
{
int k, array[10];
// more code goes in here....
f(k, array);
// this is also some code ....
}Разглеждането на масив като указател при предаването му към функция разкрива някои нови възможности.
Например във функцията да се подаде част от масива, т.е. да се подаде подмасив:
void f1(int i, int *p )
{
// Some code goes in here.....
}
void main()
{
int k, array[10];
// more code goes in here....
f1(k, array[4);
// еквивалентно на:
f1(k, array + 4 );
// Предава като указател в f1 подмасив на array като започва от 5тия елемент на масива.
// this is also some code ....
}В f1 можем да работим с подмасив по съшия начин, по които бихме работили и с цял масив.
Нека разгледаме двумерен масив:
int arr[5][10];
В C/C++ двумерните масиви всъщност се разглеждат като едномерен масив, чиито елементи са едномерни масиви ( по-точно указател към едномерен масив ).
Следователно arr и arr[i] са масиви.
arr[i][j] е елемент на двумерния масив.
arr[i] е указател към едномерен масив и като такъв може да се предаде във функция по вече познатия начин.
Примерна програма:
#include < ctype.h>
#define ROW 100
#define COL 200
void trans( char *p );
void main()
{
char str[ROW][COL];
int i;
.........
for ( i = 0; i < ROW; i++ )
trans(str[i]);
.......
}
void trans ( char *p)
{
for( ; *p != '\0' ; p++ )
*p = tolower(*p);
}