【发布时间】:2015-08-13 13:39:05
【问题描述】:
在 C 语言中,在我的文件 Lire.h 中,我有:
int* D;
在 Lire.c 文件中,我有:
D=(int*)malloc(sizeof(int*)*col);
D=(int*)CopieD;
for(i=0; i<lig;i++){
for(j=0; j<col;j++){
printf("%d ",*(D+i*col+j));
}
printf("\n");
}
这显示了我:
1 1 1 3 4 1
1 2 3 8 2 1
1 3 3 5 4 7
2 1 4 1 1 4
2 2 2 3 9 3
2 3 9 1 2 2
3 1 8 6 3 5
3 2 4 5 8 1
但是当我将显示块放在文件 main.c 中时它不能正常工作
int main(){
for(i=0; i<lig;i++){
for(j=0; j<col;j++){
printf("%d ",*(D+i*col+j));
}
printf("\n");
}
}
它给出:
1 1 1 3 855638020 1
1 2 4206857 1 1 0
2345187 0 1 0 4 7
2 1 4 1 1 4
2 2 2 3 9 3
2 3 9 1 -2146121937 1
3 1 -2146122209 1 1 5
3 0 0 0 0 0
??????????
【问题讨论】:
-
标准警告:不要像
malloc和朋友返回的那样投射void *。 C 不是 C++! -
二维数组不同于“指针数组(指向数组)”。
-
"malloc" 也以字节为单位分配内存 - 因此您需要调整内存量以适应 'int' 的大小
-
我强烈推荐读一本 C 书。你所有的问题都应该在那里处理。