首先,我这样编码。但这会得到错误。
#include <stdio.h>
int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;
p=array;
int main(){
int j;
for(j=0;j<4;j++){
printf("%d",p[1][j]);
printf("\n");
}
return 0;
}
之后我修改我的代码。 我只是把p =数组;进入int main()
#include <stdio.h>
int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;
int main(){
p=array;
int j;
for(j=0;j<4;j++){
printf("%d",p[1][j]);
printf("\n");
}
return 0;
}
为什么他们有不同的操作?
答案 0 :(得分:2)
p=array;
语句是赋值语句,必须在函数内执行。
答案 1 :(得分:0)
在此声明并定义全局变量
int (*p)[4]=NULL;
然后执行代码(在任何函数之外禁止)
p=array;
相反,你可以这样做
int (*p)[4]=array;
或明确声明和定义如下
int (*p)[4];
int (*p)[4] = array;
答案 2 :(得分:0)
p=array
是一个无法在函数外执行的赋值语句。 因为声明应该可以在函数内部(本地声明)或函数外部(全局声明)中完成,但是赋值应该只在函数内完成。
虽然同时进行声明和分配可以在全球范围内完成(例如在您的代码中):
int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;