【发布时间】:2020-03-16 13:43:47
【问题描述】:
在 c prime plus 中,它告诉我遵循了一些分配规则:
不能将指向整数数组的指针分配给指向整数的指针。
int *pt; int a[3][2];
pt=a; /* invalid */
不能将指向二整数数组的指针分配给指向三整数数组的指针。
int (*pt)[3]; int a[3][2];
pt=a; /* invalid */
坦率地说,我对这个解释感到困惑。因为虽然上面的指针是指向不同对象的指针,但是在内存中,指针都是以无符号的十六进制地址存储的,也就是说它们具有相同的存储形式。它们统一为 8 位(64 位操作系统)或 4 位(32 位操作系统)。那么为什么他们不能在根本原因上相互分配呢?因为编译器禁止这类赋值?
【问题讨论】: