int a [4][10] ,*p; p=a;这句话为什么错了啊?int a[9],*p; p=a;和上面的区别?

xmz11 1年前 已收到1个回答 举报

虫竹 花朵

共回答了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; }
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.133 s. - webmaster@yulucn.com