C 结构指针与实际结构

C 结构指针与实际结构,c,pointers,C,Pointers,为什么structsomestruct*mystruct=…是指向类型为somestruct的结构的指针?*是否取消引用mystruct?否。在变量声明中,*是类型说明符的一部分 我知道一开始有点困惑,但事实就是这样。如果您发现很难习惯复制大量涉及指针符号的表达式并练习将它们翻译成英语,例如“somestruct pointer my struct equals…”和“mystruct指向的值是…”。否。在变量声明中,*是类型说明符的一部分 我知道一开始有点困惑,但事实就是这样。如果您发现很难习

为什么struct
somestruct*mystruct=…
是指向类型为
somestruct
的结构的指针?
*
是否取消引用mystruct?

否。在变量声明中,
*
是类型说明符的一部分


我知道一开始有点困惑,但事实就是这样。如果您发现很难习惯复制大量涉及指针符号的表达式并练习将它们翻译成英语,例如“somestruct pointer my struct equals…”和“mystruct指向的值是…”。

否。在变量声明中,
*
是类型说明符的一部分


我知道一开始有点困惑,但事实就是这样。如果您发现很难习惯复制大量涉及指针符号的表达式并练习将其翻译成英语,例如“somestruct pointer my struct equals…”和“mystruct指向的值是…”.

当*运算符用于引用已声明的变量时,它是一个延迟运算符;当*运算符用于初始化时,它表示初始化的变量是一个指针;

当*运算符用于引用已声明的变量时,它表示初始化的变量是一个指针用于初始化时

struct somestruct*mystruct
使
mystruct
成为类型为:
struct somestruct*
的变量

因此,
mystruct
是指向
struct somestruct

这是在声明mystruct时发生的


在使用mystruct时:
(*mystruct).foo=10取消引用
mystruct

struct somestruct*mystruct
使
mystruct
成为类型为:
struct somestruct*
的变量

因此,
mystruct
是指向
struct somestruct

这是在声明mystruct
时发生的


在使用mystruct时:
(*mystruct).foo=10取消引用
mystruct

理解这一点需要了解指针的基本知识,以及指针的工作原理。总之,您在程序中声明的每个变量都存储在计算机内存中的一个位置,当访问变量时,硬件使用该位置的地址

因此,指针只是一个存储另一个变量的内存地址的变量

somestruct *mystruct = ...
告诉电脑 “嘿,这是一个类型为somestruct name mystruct!”的指针。mystruct前面的“*”只告诉编译器这是一个指针

这是我们定义指针的标准方法,如果您能够理解以下内容,同样的概念也适用于声明结构指针:

char *mychar = ...
double *mydouble = ...

明白了吗?第一行简单地告诉C编译器这是指向char name*mychar类型的指针。猜猜第二行的作用是什么。:)

理解这一点需要了解指针的基本知识,以及指针的工作原理。总之,您在程序中声明的每个变量都存储在计算机内存中的一个位置,当访问变量时,硬件使用该位置的地址

因此,指针只是一个存储另一个变量的内存地址的变量

somestruct *mystruct = ...
告诉电脑 “嘿,这是一个类型为somestruct name mystruct!”的指针。mystruct前面的“*”只告诉编译器这是一个指针

这是我们定义指针的标准方法,如果您能够理解以下内容,同样的概念也适用于声明结构指针:

char *mychar = ...
double *mydouble = ...

明白了吗?第一行简单地告诉C编译器这是指向char name*mychar类型的指针。猜猜第二行的作用是什么。:)

进一步信息:许多符号在声明中的含义与在语句中的含义不同,例如
*
&
=
进一步信息:许多符号在声明中的含义与在语句中的含义不同,例如
*
&
=/code>在声明中它根本不是运算符。“运算符”表示它接受输入值并产生输出值。在声明中,它根本不是运算符。“运算符”表示它接受输入值并产生输出值。