0%

C语言中的指针为什么要区别出指向不同数据类型的指针?

一个知乎问题,我觉得超级有用的

比如 char *p = “hello,world”;
p是指向字符的指针. 但是指针是一个存放内存地址的变量, 在内存编址中地址都是整数, 都是整数那声明的时候为什么不可以直接 *p = “hello”, *p = 1234; 呢?

指针如果没有类型,那么指针的“++”、或者“p=p+2”这样的操作,既不知道要偏移多少了。

以p=p+2为例,编译器会根据p的类型将这个语句翻译成 p = p + 2 * (指针类型占用的内存大小),如果没有类型,这个语句就没有办法实现。但是到运行期,这个东西就看不见了。

ref:

https://www.zhihu.com/question/24891226