【发布时间】:2010-09-17 21:02:18
【问题描述】:
我想在指针的帮助下扫描一个二维数组并写了这段代码,你能告诉我为什么编译器会出错吗?
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int i,j,n,a,b;
int (*(*p)[])[];
printf("\n\tEnter the size of the matrix in the form aXb\t\n");
scanf("%dX%d",&a,&b);
p=(int (*(*p)[b])[a])malloc(b*sizeof(int (*p)[a]));
for(i=0;i<b;i++) {
p[i]=(int (*p)[a])malloc(a*sizeof(int));
printf("\t\bEnter Column %d\t\n");
for(j=0;j<a;j++)
scanf("%d",&p[i][j]);
}
return 0;
}
【问题讨论】:
-
您遇到了什么错误?你用的是什么编译器?你是用 C 还是 C++ 构建的?
-
别忘了
free你分配内存的所有对象。 -
你明白什么是指针吗?从这段代码看来,你认为它是一个数组,来自
int (*(*p)[])[];,这是完全错误的。
标签: c pointers multidimensional-array