C++ struct


struct

一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如array、struct、union等)的数据单元。

结构体的概念在C++中的得到了扩展,可以加入成员函数,可以说与c的不同之处在于访问权限的不同

对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。

以32位计算机为例,一个机器字4字节,存取数据以4的倍数开始。

自然对界(natural alignment)即默认对齐方式,是指按结构体的成员中size最大的成员对齐

struct MyStruct
{
	 short a;
	 short  b;
	char c;
	void my() {};
};

长度为6,当其中int b时长度为12




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,使用`struct`关键字来定义结构体。结构体可以包含多个成员变量,每个成员变量可以有不同的数据类型。结构体可以通过不同的方式来创建变量。 一种创建结构体变量的方式是在定义结构体时顺便创建变量。例如: ``` struct student { string name; int age; int score; } stu1; // 定义结构体时创建变量stu1 ``` 另一种方式是使用赋值方式创建结构体变量。例如: ``` struct student stu2 = {"可乐", 19, 100}; // 使用赋值方式创建结构体变量stu2 ``` 还可以先定义结构体,在后面通过赋值的方式来初始化成员变量。例如: ``` struct student stu3; // 先定义结构体 stu3.name = "雪碧"; stu3.age = 20; stu3.score = 90; ``` 此外,还可以使用结构体指针来操作结构体。例如: ``` struct student { string name; int age; int score; } *pStu; // 声明一个指向结构体的指针变量pStu pStu = &stu1; // 将指针指向已经创建的结构体变量stu1 cout << "姓名:" << pStu->name << " 年龄:" << pStu->age << " 分数:" << pStu->score << endl; ``` 这样就可以通过指针来访问结构体的成员变量。需要使用箭头运算符(`->`)来访问指针所指向的结构体的成员变量。 总结起来,C语言中可以使用`struct`关键字来定义结构体,并且可以通过不同的方式来创建结构体变量,包括在定义结构体时顺便创建变量、使用赋值方式创建变量和使用结构体指针来操作结构体成员变量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++之struct](https://blog.csdn.net/gghhb12/article/details/123975142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++ Struct(结构体)详解](https://blog.csdn.net/weixin_42018112/article/details/82429514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值