虫竹
花朵
共回答了26个问题采纳率:88.5% 举报
int a [4][10] ,*p; p=&a[0][0];这样才正确,p是一级指针,a是2维数组名,算是二级指针了,因此p=a是不行的.
int a[9],*p; p=a;a这里是数组名,是首地址,算是一级指针,因此p=a是正确的
1年前
追问
3
xmz11
举报
可不可以定义个二维指针指向二位组啊? int **p,a[][] p=a 这样的? 那这样的话 p指向哪 *p指向哪
举报
虫竹
下面是编写的一些例子,参考下 #include #include int main(void) { int a[4][10];//二维数组 int i,j; int **p; //二级指针 int *q[4]; //指针数组 int (*t)[10];//数组指针 for(i=0;i<4;i++) for(j=0;j<10;j++) a[i][j]=i+j; printf("二维数组a:n"); for(i=0;i<4;i++) {for(j=0;j<10;j++) printf("%3d",a[i][j]); printf("n"); } printf("n"); p=(int**)calloc(10,sizeof(int*));//给p开辟内存 for(i=0;i<4;i++) p[i]=a[i]; printf("二级指针p:n"); for(i=0;i<4;i++) {for(j=0;j<10;j++) printf("%3d",p[i][j]); printf("n"); } printf("n"); //指针数组 for(i=0;i<4;i++) q[i]=a[i]; printf("指针数组q:n"); for(i=0;i<4;i++) {for(j=0;j<10;j++) printf("%3d",q[i][j]); printf("n"); } printf("n"); //数组指针 t=a; printf("数组指针t:n"); for(i=0;i<4;i++) {for(j=0;j<10;j++) printf("%3d",t[i][j]); printf("n"); } printf("n"); return 0; }