C语言之struct A *b和struct A c区别

举报
chenyu 发表于 2021/07/27 00:21:28 2021/07/27
【摘要】 struct A *b; 是指针 struct A c; 是定义了一个struct A对象,你得提供相应的结构体的具体定义 结构体A没有具体的定义,当struct A c时,实际是定义一个结构体变量,这是要分配存储空间的,空间大小依结构体中具体的变量而定,如果没有具体的结构体定义,编...

struct A *b; 是指针

struct A c; 是定义了一个struct A对象,你得提供相应的结构体的具体定义

结构体A没有具体的定义,当struct A c时,实际是定义一个结构体变量,这是要分配存储空间的,空间大小依结构体中具体的变量而定,如果没有具体的结构体定义,编译器不知道结构体到底是什么样的,就无法知道结构体到底占据所少存储空间,所以编译不能通过.
struct A *p只是定义一个指针,跟具体结构体的关系不是很大,因为在32位平台上,不管什么指针,其大小永远都是4个字节,指针其实就是4个字节的无符号整数,用来标记内存地址

举例:

 


  
  1. #include<stdio.h>
  2. struct A {
  3. int data;
  4. };
  5. int main(){
  6. struct A *b;
  7. struct A c;
  8. b = &c;
  9. c.data = 10;
  10. printf("%d\n", b->data);
  11. return 0;
  12. }

 

 

 

结果:

为10

注意是%d,不是d%,以后注意了

.

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/53781273

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。