Увод в програмирането
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); }