指针3
指针和多维数组
-
代码:
#include <stdio.h> int main(){ int C[3][2][2]={{{2,5},{7,9}}, {{3,4},{6,1}}, {{0,8},{11,13}}}; printf("%d %d %d %d\n",C,*C,C[0],&C[0][0]); printf("%d\n",*(C[0][0]+1)); }
输出结果:
6487536 6487536 6487536 6487536 5
可以看出下列表示是等效的,输出的结果相同
C , *C , C[0] , &C[0][0]
-
代码:
#include <stdio.h> void Func(int *A) {
}
int main(){
int C[3][2][2]={{{2,5},{7,9}},
{{3,4},{6,1}},
{{0,8},{11,13}}};
int A[2] = {1,2};
int B[2][3] = {{2,4,6},{5,7,8}};//B返回一个一维数组的指针 (int ()[3])
Func(A);// A 返回指向整型的指针 (int)
}为了让函数接收B作为参数,应该修改代码为:
#include <stdio.h> void Func(int A[][3] ){
}
int main(){
int C[3][2][2]={{{2,5},{7,9}},
{{3,4},{6,1}},
{{0,8},{11,13}}};
int A[2] = {1,2};
int B[2][3] = {{2,4,6},{5,7,8}};//B返回一个一维数组的指针 (int ()[3])
Func(B);// A 返回指向整型的指针 (int)
}如果传三维数组代码如下:
void Func(int A[][2][2] ){
}
int main(){
int C[3][2][2]={{{2,5},{7,9}},
{{3,4},{6,1}},
{{0,8},{11,13}}};
int A[2] = {1,2};
int B[2][3] = {{2,4,6},{5,7,8}};//B返回一个一维数组的指针 (int ()[3])
Func(C);// A 返回指向整型的指针 (int)
}-
如:**A因为二维以上的维度需要指定,所以不能这样定义
-