我在这里已经阅读了很多关于C指针的问题和答案,但是没有找到解释为什么C不允许地址存储在常规int中的任何东西 - 它似乎更简单地输入:
int a = 100;
int b = &a;
int c = &b; //etc
Run Code Online (Sandbox Code Playgroud)
而不是
int a = 100;
int* b = &a;
int** c = &b; //etc
Run Code Online (Sandbox Code Playgroud)
实际上,我不确定是否所有编译器都不允许这样做,或者它是否仅标记警告.但是,如果我完成同样的事情,(存储变量的地址以供参考),如果我使用指针表示法或直接分配值,它会有什么不同?
最根本的原因当然是当你想使用 一个指针,即取消引用它来访问它指向的值时,你必须知道该值的类型.
否则,编译器将如何为该特定类型生成正确的指令?
考虑指向字符的指针与指向的字符int.在大多数情况下,后一个值是4,有时是8倍.显然,这会影响访问和处理值的方式.
在不区分指针类型的情况下,这变得不可能.