2024-11-24 07:40:55
int (*p)[3] = &a[0][0];如果这个是正确的
int * p1 = &a[0][0];//那为什么这个也可以赋值成功呢?
int (*p)[3]是int (*) []类型的数组指针
int * p1是int *类型的指针
为什么同一个类型的地址&a[0][0]可以赋给2个不同类型的指针呢?
赋值当然是可以的,它本身是指针,可以接受任何地址,只要符合规则就是可以的。但是赋值之后是否能够按照你的逻辑进行就是你需要思考的问题了
int (*p)[3] = &a[0][0];
//类型不同的指针可以随便赋值的吗?那这段代码在C++头文件下编译就出错,提示: “初始化”: 无法从“int *”转换为“int (*)[2]”,这又是为什么呢?
int (*p)[3] = &a[0];