【发布时间】:2016-01-30 16:57:23
【问题描述】:
我写了两个鳕鱼。一个有效,另一个无效。请解释此代码棒的工作原理,为什么后者不起作用。
工作-
#include <stdio.h>
#include <malloc.h>
int main(){
int m, n, i, j;
scanf("%d%d",&m,&n);
int *p;
p = (int *) malloc(m*n*sizeof(int));
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d", (p+i*n+j));
}
}
}
不工作 -
#include <stdio.h>
#include <malloc.h>
int main(){
int m, n, i, j;
scanf("%d%d",&m,&n);
int *p;
p = (int *) malloc(m*n*sizeof(int));
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d", p[i][j]);
}
}
}
错误是 - 下标值既不是数组也不是指针也不是向量
scanf("%d", p[i][j]);
【问题讨论】: