指针始终存储整数值即地址,因此我们需要使用不同的数据类型声明它们.
喜欢
int a=3,*p=&a;
char c=r,*cha=&r;
Run Code Online (Sandbox Code Playgroud)
为什么我们不能这样做
int *c;
char r=a;
c=&r;
Run Code Online (Sandbox Code Playgroud)
基本上是因为
如果指针类型不明确,则指针算法将不起作用.
指向成员运算符的指针不适用于struct指针类型.
类型的对齐要求可能不同.有可能将a存储char在无法存储的位置int.
C标准不保证指针的大小相同:即sizeof(int*)不一定相同sizeof(char*).这允许C用于异国情调的架构.