标准的答案!因为p是个int*而a是个char*
p++一次移动4个字节,所以*p=*p+1在a数组的范围内修改了a[0]和a[4],i>1以后的都是越界操作
于是最终输出Dhinb
你用的什么编译器,像p=a这个在目前的编译器是通不过的
作者的意思是 给指针变量赋一个int类型是不对的,也就是说:
int *i_pointer = 100; i_pointer是指针类型,100是int类型,显然是不对的,作者写成:
*i_pointer = 100;是会让人产生疑惑的,应该说:
int *i_pointer = 100; 是错误的。
int i;
int *i_pointer = &i;
i = 3; 是可以的
i_pointer = 3; 数据类型不一致
3是int类型,而i_pointer是int*类型,虽然地址的值可能是int或long,编译器是防止你不小心输入错误
你可以i_pointer = (int*)3;
那本书上是下划线,不是减号。。。是*i_pointer=100,i_pointer是一个指针变量。。。不知道朋友是不是写错了。。。