有关C语言指针的问题?

指向不同数据类型的指针为什么要定义不同的类型,指针存的不都是地址吗?

c

4个回答

你可以去看看《C和指针》这本书,看过之后,相信你会对指针更加了解了

例如:


int key = 100;
int* p=&key;

// p存储的是key的地址, *p 指的是key的值,而key的值是int整形,所以你要指明*p的类型为int

指针存的都是地址。这句话说的没错
但是你如果指针没有类型的话,只知道这个地址,那该用什么方式去解析这片内存呢?
不同的数据类型,对于同样的内存空间解读出来的信息是不同的

指针长度都是一样的,因为存的是地址值,所以有时你会看到有时候会把指针做强置转换,
例如将 int * 类型转换为 void *类型。为什么定义不同的类型呢?
是因为指针只有地址信息,它不知道所指向的那个地方存放的是int值(占4个字节),还存放了long型的值(8字节),
所以需要按它所定义的类型来去取值(至少要知道取多少字节的数据吧)。

这就是*p的星号存在的意义

qq_30039287
qq_30039287 也就是p与*p的区别
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问