struct的初始化

1、struct的初始化可以使用类似数组的方式,如下:
struct Student
{
int _Age;
string _Name;
};
Student stu = {26,"Andy"};
2、有两个地方需要注意:
a、顺序要保持一致,如下:
Student stu = {"Andy",26}; 编译报错
b、后面的可以不初始化
Student stu = {26}; 只初始化_Age
3、考虑下面的情况,Student当中有个字段,表示Student对象的大小,而在Debug和Release下,大小是不一样的,怎么办?
使用sizeof,如下:
struct Student
{
int _Size;
int _Age;
string _Name;
};
Student stu = {sizeof(stu),26,"Andy"};
4、注意:同一个数据类型,在Debug和Release模式下,占用的内存有可能会不一样。比如:
int :Debug和Release 一样,都是4个字节
string :Debug占用32个字节,Release占用28字节
5、在Debug模式下,对象本身有可能会多占用一些字节,同时,Debug模式下,对象的前后还会多占用一些字节(比如int 前后各4个字节),用于保存调试信息。

时间: 2024-10-20 06:54:24

struct的初始化的相关文章

c语言中struct的初始化

C++中的struct已经和class一样,可以用构造函数初始化. C语言中的struct怎么初始化呢? typedef struct _TEST_T {        int i;        char c[10];}TEST_T; TEST_T gst  = {1, “12345”};//可以初始化,设置i为1,s为一个字符串. TEST_T gst  = {1};//初始化个数少于实际个数时,只初始化前面的成员. TEST_Tgst  = {.c=“12345”};//有选择的初始化成员

struct {0}初始化

#include <iostream> struct MyStruct { MyStruct(int a) { a = b = 0; } int a; int b; }; int main() { MyStruct my = {0};//列表初始化只适合非聚合结构体,所以这样不行,所以需要将上面的构造函数去掉,但发现把struct换成class还是不行的,莫非class天生就是聚合的? getchar(); return 0; }网上搜到的解释 4.1.3 聚合(aggregate) int

struct的初始化,拷贝及指针成员的使用技巧

struct是C中重要的ADT.但是在一般讲C的书中,往往只介绍了struct的定义.顺序初始化及位域. 本文将笔者曾经用到的.看到的知识点罗列出来,与大家分享. 为了方便后面的介绍,先定义一个struct类型:         struct User         {             int id;             //id             char name[100];     //user name             char *home;        

c语言 struct 的初始化

转自:http://www.cnblogs.com/silentjesse/archive/2013/07/30/3225212.html struct数据有3中初始化方法:顺序,C风格及C++风格的乱序. 1)顺序 这种方法很常见,在一般的介绍C的书中都有介绍.顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化:允许只初始化部分成员:在被初始化的成员之前,不能有未初始化的成员. eg: struct User oneUser = {10, "Lucy", "/ho

struct中初始化中的一个大错误

If I have defined the struct as follows : /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct  MyParam : public CommonParam {  float Im

struct数组初始化

const int MAXN=100; struct A { int a,b; }; struct A arr[100];//此时编译通过 struct A arr[MAXN];//此时编译不通过,原因是什么?

C++ struct 定义及初始化

1 定义: struct Book{ unsigned int bookNo; string name; }; 2 初始化 struct的初始化分为三种:逐一赋值,顺序赋值,乱序赋值 //    逐一赋值: Book book;    book.bookNo = 123;    book.name = "iam a book"; //    顺序赋值 Book book1 = {12, "book1"}; // C++风格的乱序赋值 Book book2 = { b

C#中结构(struct)的部分初始化和完全初始化

假设有这样一个值类型struct. public struct Size { public int Length; public int Width; public int Area() { return Length*Width; } } □ 客户端,给所有struct字段初始化后调用方法 class Program { static void Main(string[] args) { Size size; size.Length = 10; size.Width = 5; Console.

Linux下C结构体初始化[总结]

1.前言 今天在公司看一同事写的代码,代码中用到了struct,初始化一个struct用的是乱序格式,如下代码所示: typedef struct _data_t { int a; int b; }data_t; data_t data = { .a = 10, .b = 20, }; 通常初始化一个结构体的方式是按序初始化,形如:data_t data={10,20}.感觉很好奇,如是上网百度一下,发现linux下struct初始化可以采用顺序和乱序两种方式,而乱序又有两种不同的形式. 本文总