对于这个问题,要考虑两个因素,
1. 首地址进行赋值时需要考虑类型相同,点击打开:点击打开链接
2. 就是关于指针在运算方面会出现的问题,本着重介绍此点:
int a[5] ;
int * p1 = a;
当执行 p1++时,由于sizeof(int)=4,p1 指向的地址会由首地址往后移动4个字节空间,从a[0] ->a[1]。
在假设下列代码可行的基础上:
int a[5];
char * p2 = a;
当执行 p2++时,只移动一个字节,无法实现a[0] ->a[1]的变化4个字节需求。
因此可以得出结论:
int a[5] 数组不能将首地址赋值给 char * p的原因从运算规则的角度考虑这样是不利于数据处理的。