这个问题问的很好啊,C语言中的这个破星号,搞晕了多少人。
* 操作符的本质我认为有两个:一个是声明指针时使用,一个是取指针的“他值”时使用,具体如下:。
1. 在指针声明时使用
在声明一个指针时候,是要加上星号的,比如: int *pInt = NULL; 这里的星号没别的意思,就是告诉编译器,pInt是个指针。 好,下面第二点才是关键。
2. 取指针的“他值”时使用
我将指针总结为5个维度:己址、己值、他值、他址、他型。每个维度的意思,我在“C语言编程技术分享”这个公众号里写了文章来阐述,题目是:从5个维度来看C语言指针(指针就是个纸老虎)。下面大概论述下每个维度的意思:
在代码中使用指针的己址维度时,不需要加星号;
在代码中使用指针的己值维度时,不需要加星号;
在代码中使用指针的他值维度时,需要加星号;
在代码中使用指针的他址维度时,不需要加星号;
在代码中使用指针的他型维度时,不需要加星号;
所谓的“他值”,就是指针指向的那个地址中存储的数据值。比如: int a = 1; int *p = NULL; p = &a; 那么指针p的“他值”就是1。
综上所述,*这个操作符,本质是一个是用于声明指针,一个是用于取出指针的他值。 指针有啥呀,也就这些东西而已。