C - 结构变量是指针吗?

Thu*_*yen 4 c struct

我搜索了很多,但找不到任何与此相关的主题。我的问题是:结构变量是指针吗?如果每个输入都存储在结构体成员的地址中,那么结构体变量有什么用呢?

这是我用于检查结构变量的代码,当我打印变量中存储的内容时,它给了我另一个地址,但我无法弄清楚该地址的用途。

这是我的代码及其输出:

 struct test
 {
 int a;
 int b;
 char c;
 }; 

 int main()
 {

 struct test f;

 printf("%u", &f);
 printf("\n%d", f);
 printf("\n%u", &f.a);
 printf("\n%u", &f.b);
 }
Run Code Online (Sandbox Code Playgroud)

输出:

6487616

6487600

6487616

6487620

Sou*_*osh 5

简短的回答:

长版本:上述程序中的所有打印语句都会调用未定义的行为,因为提供的参数与转换说明符不匹配。

详细地说,要打印指针,您需要使用转换说明符,并将参数%p强制转换为 to 。void *

结构变量没有通用一一对应)格式说明符。您需要选择具有相应格式说明符的单个成员(或成员的成员),并将其作为参数传递。

也就是说,关于第一个成员和访问权限,

[...] 指向结构对象的指针,经过适当转换后,指向其初始成员(或者如果该成员是位字段,则指向它所在的单元),反之亦然。[...]