为什么struct somestruct* mystruct = ...
是指向somestruct
类型结构的指针?不是*
dereference mystruct吗?
答案 0 :(得分:5)
否。在变量声明中,*
是类型说明符的一部分。
我知道一开始有点令人困惑,但事实恰恰相反。如果你发现很难习惯尝试复制一些涉及指针符号的表达式并练习将它们翻译成英语,比如" somestruct指针我的结构等于......"和" mystruct指向的值是......"。
答案 1 :(得分:1)
struct somestruct* mystruct;
使mystruct
成为TYPE的变量:struct somestruct*
。
因此mystruct
是指向struct somestruct
这是在宣布mystruct
期间。
使用mystruct
:(*mystruct).foo=10;
解除引用mystruct
。
答案 2 :(得分:0)
*运算符在用于引用已声明的变量时是一个解除引用运算符,并指示初始化变量在用于初始化时是指针
答案 3 :(得分:0)
理解这一点需要您了解指针的基础知识以及指针的工作原理。总之,您在程序中声明的每个变量都存储在计算机内存中的某个位置,当访问变量时,硬件会使用该位置的地址。
因此,指针只是一个存储另一个变量的内存地址的变量。
somestruct *mystruct = ...
告诉计算机 “嘿,这是somestruct name mystruct类型的指针!”。 mystruct的'*'前面只告诉编译器这是一个指针。
这是我们定义指针的标准方法,如果您能理解以下内容,则相同的概念适用于声明结构指针:
char *mychar = ...
double *mydouble = ...
得到它?第一行只是告诉C编译器这是一个指向char name * mychar类型的指针。猜猜第二行的作用。 :)