首先,C语言的所有变量必须在程序的一开始就定义,也就是说,在for语句中是不能定义m和n的。
其次,不能重复定义变量,即使在C++中,int k这个语句也会报错,因为每执行一次for循环就会定义一次k。这是不允许的。
最后,p[N][N]=k,改为*p[m][n]=k。既然N做宏代换等于10,p[10][10]显然是错误且无意义的。若把p定义为数组,则p前不用加*,但此处p为指针,p[m][n]是个地址,而不是地址所对应的数据,k应该赋给指针所指的数据才对。
修改如下:
#include
#include
#include
#define N 10
main()
{
int m,n,k;
int (*p)[N][N];
p = malloc(N*N*sizeof(int));
srand(time(NULL));
for(m=0;m
k=rand()%3-1;
*p[m][n]=k;
}
}
必须用指针?
不用的话这样就行了
#include
#include
#include
#define N 10
main() {
int m,n,k;
int p[N][N];
srand(time(NULL));
for(m=0;m
p[m][n]=k;
printf("%4d",p[m][n]);
}
}