一个知乎问题,我觉得超级有用的
比如 char *p = “hello,world”;
p是指向字符的指针. 但是指针是一个存放内存地址的变量, 在内存编址中地址都是整数, 都是整数那声明的时候为什么不可以直接 *p = “hello”, *p = 1234; 呢?
指针如果没有类型,那么指针的“++”、或者“p=p+2”这样的操作,既不知道要偏移多少了。
以p=p+2为例,编译器会根据p的类型将这个语句翻译成 p = p + 2 * (指针类型占用的内存大小),如果没有类型,这个语句就没有办法实现。但是到运行期,这个东西就看不见了。
ref: