指针数组和数组指针
1.利用指针数组求二维数组元素的和
1 //len1二维数组的行数 2 3 //len2二维数组的列数 4 5 int getSum(int *a[],int len1,int len2) 6 7 { 8 9 int sum = 0; 10 11 for(int i=0;i<len1;i++) 12 13 { 14 15 for(int j=0;j<len2;j++) 16 17 { 18 19 // sum += a[i][j]; 20 21 // sum += (*(a+i))[j]; 22 23 sum += *((*(a+i))+j); 24 25 } 26 27 } 28 29 return sum; 30 31 } 32 33 int main() 34 35 { 36 37 int a[3][2] = {1,2,4,5,6,6}; 38 39 int *p[3] = {NULL}; 40 41 for(int i=0;i<3;i++) 42 43 { 44 45 p[i] = a[i]; 46 47 } 48 49 printf("sum = %d",getSum(p, 3, 2)); 50 51 return 0; 52 53 }
2.利用数组指针来求二维数组的和
int sum1(int (*p)[2],int len) { //传递一维数组的指针 int sum = 0; for(int i=0;i<len;i++) { for(int j=0;j<2;j++) { sum += *(*(p+i)+j); } } return sum; } int sum2(int (*p)[3][2]) { //传递二维数组的指针 int sum = 0; for(int i=0;i<3;i++) { for(int j=0;j<2;j++) { //sum += (*p)[i][j]; sum += *(*(*p+i)+j); } } return sum; } int main() { // printf("size = %ld\n",sizeof(int [4])); int a[3][2] = {1,2,4,5,6,7}; printf("sum1 = %d\n",sum1(a, 3)); printf("sum2 = %d\n",sum2(&a)); return 0; }
内容原创-可转载-请保留原地址