C指向不同数据类型的指针

Dan*_*777 2 c pointers

指针始终存储整数值即地址,因此我们需要使用不同的数据类型声明它们.

喜欢

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)

Bat*_*eba 6

基本上是因为

  1. 如果指针类型不明确,则指针算法将不起作用.

  2. 指向成员运算符指针不适用于struct指针类型.

  3. 类型的对齐要求可能不同.有可能将a存储char在无法存储的位置int.

  4. C标准不保证指针的大小相同:即sizeof(int*)不一定相同sizeof(char*).这允许C用于异国情调的架构.

  • 结构指针也需要知道他们可以指向的成员. (3认同)