也就是说,p+1,实际增长的值是sizeof(*p)
所以,将p转为int*后,加10,实际增加是10*sizeof(int)也就是40
而如果是p+2,由于p是char*,实际增加的是2*sizeof(char)=2
指针类型,是一个地址。数组的名称,就是一个地址,所以,强制指针类型的作用对象的数组,针对的必须是数组名。所以要括起来。数组名[i],指数组中的i号元素,不是地址,不应该被强制转换为一个指针。test是指向0x64000000没错。但是test的作用域就不是一个字节。
C语言的指针强大在于在当前进程的内存空间内可以任意操作内存。
也就是这个test可以访问任意地址。不存在作用域只有一个字节的说法。
所以,安全性只有代码来保证。编译器是不保证的