×

结构体初始化 结构体 初始化

结构体初始化(如何对结构体变量进行初始化)

admin admin 发表于2022-09-04 09:44:54 浏览269 评论0

抢沙发发表评论

本文目录

如何对结构体变量进行初始化


结构体初始化可以再定义时制定初始值,如:

struct
student

{

int num;

char name;

} student1 =
{10001,“zhangxin“};

也可以采取申明类型与定义变量分开的形式,在定义变量时进行初始化:

student student1 =
{10001,“zhangxin“} 。

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data
type)的一类。

结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。


C语言结构体初始化操作是什么意思


定义变量的同时给变量赋值
即为变量的初始化,例如:
int
year
=
2003;
结构体
也类似的啦,
struct
BOOK
{
char
name;
float
price;
};
struct
BOOK
book_1
=
{“C语言“,
25.0};
-结构体

结构体数组怎么初始化


结构体数组在定义的同时也可以初始化,例如:

struct stu{

char *name;  //姓名

int num;  //学号

int age;  //年龄

char group;  //所在小组 

float score;  //成绩

}class = {

{“Li ping“, 5, 18, ’C’, 145.0},

{“Zhang ping“, 4, 19, ’A’, 130.5},

{“He fang“, 1, 18, ’A’, 148.5},

{“Cheng ling“, 2, 17, ’F’, 139.0},

{“Wang ming“, 3, 17, ’B’, 144.5}

};

当对数组中全部元素赋值时,也可不给出数组长度,例如:

struct stu{

char *name;  //姓名

int num;  //学号

int age;  //年龄

char group;  //所在小组 

float score;  //成绩

}class = {

{“Li ping“, 5, 18, ’C’, 145.0},

{“Zhang ping“, 4, 19, ’A’, 130.5},

{“He fang“, 1, 18, ’A’, 148.5},

{“Cheng ling“, 2, 17, ’F’, 139.0},

{“Wang ming“, 3, 17, ’B’, 144.5}

};

扩展资料:

定义结构体数组和定义结构体变量的方式类似,请看下面的例子:

struct stu{

char *name;  //姓名

int num;  //学号

int age;  //年龄

char group;  //所在小组 

float score;  //成绩

}class;

表示一个班级有5个学生。

参考资料:C语音中文网-C语言结构体数组


结构体数组初始化


并不是aleda所说的原因,你可以试一下,即便不要结构体不要字符串
struct city
{
double population;
double housing;
double ave;
};
city cities;
cities={22,10000,11};
cities={22,20000,11};
这里与结构体匹配了,但是同样不可能通过
原因是C\C++语法是禁止结构体这样赋值的!!
你提到了初始化,的确结构体数组初始化是可以通过大括号这种形式进行初始化的,但是一定要注意
类似这样的语句,不是初始化,而是重新赋值!
cities={“A“,10000,11};
cities={“B“,20000,11};
结构体数组的初始化在
city cities;
这一句的时候就完成了(初始化了cities和cities这两个元素)
所以正确的初始化格式应该如下:
city cities = {{“a“, 1,1,1}, {“b“, 1,1,1}};
// 还要注意一点,你问题处的成员少给了一个,结构体里有三个double,你只给了两
记住一点:
初始化永远是在定义的时候完成的,
(或者如果是类的成员变量,其初始化是在构造函数的初始化列表中完成,如果你学的是C,可以忽略)
非定义处的只有重新赋值,没有初始化!
/////////////////////////////////////////////
补充:别的数组?那也是不行的
你可以把别的数组这样赋值的代码发一下?
-初始化

结构体指针数组怎么初始化


(1)
int a={1,2,3,4,5}; //OK
(2)
int a;
a={1,2,3,4,5};
//ERROR
结论:对于数组用大括号{}的赋值方式只是在定义的时候适用
否则必须用循环的方式
结构体初始化(方法一)
using
namespace std;
struct S{
int i;
float f;
};
struct S
s={10,15.5};//使用{}的正确方式
如果改成
struct S
s;
s={10,15.5};就不行
方法二(通行的方法)
从Ucos_ii.c内核代码中学到的
OS_MemClr((INT8U
*)&OSTCBTbl,sizeof(OSTCBTbl));Clear all the
tcb
下面是给结构体数组清零的函数,实质是将结构体占据的内存区域视为字符变量区域
,用循环对单个内存字节单元的清零来实现对结构体占据的内存区域即(结构体)的清零
void
OS_MemClr (INT8U *pdest, INT16U size)
{
while (size 》 0) {
*pdest++
= (INT8U)0;
size--;
}
}
注意函数OS_MemClr中的强制类型转换 INT8U
(*)&OSTCBTbl,
目的是将结构体指针转化成字符型指针,对单个内存单元的清零(*pdest++ =
(INT8U)0;),来完成对结构体的清零(或者是结构体数组)
-结构体

c语言,结构体数组怎么初始化


对于数组元素很多的初始化可以使用初始化列表方法。在c语言中用于进行初始化的程序结构则称为初始化器或初始化列表。

1、初始化器

初始化器是声明器的可选部分,它由一个’=’以及其后的一个表达式(或含有多个以’,’隔开的带圆括号表达式的单一列表)所组成。后面这一列表有时也被称为“初始化(器)列表”(initializer list)或”初始化列表”(initialization list)。-初始化

例:

public class Curry

{public string MainIngredient { get; set; }

public string Style { get; set; }

public int Spiciness { get; set; }}

2、初始化列表

一个类/结构的构造函数可以在定义中于构造函数体前包含一个初始化列表,用以给类/结构的元素赋初值。

例:

class foo

{public:

foo(string s, int i):name(s), id(i){} ; // 初始化列表

private:

string name ;int id ;};

扩展资料

在程序里,数据初始化也可能在没有由明确的语法来实现的情况下进行。例如说,如果一个静态变量在没有初始化(即未指定初值)的情况下被声明,则:对于原生数据类型:以对应类型的零值进行初始化;对于类中的静态对象:由其默认的构造函数来进行初始化。-结构体

每一个初始化部分里面的代码在程序运行后,或库的begin-end块运行之前。delphi使用对单元相关树的深度优先遍历来运行初始化部分。换句话说,就只在一个单元的初始化代码运行前,delphi就运行了特他使用的每一个单元的初始化部分。每一个单元仅初始化一次 。-初始化

参考资料来源:百度百科——初始化

百度百科——初始化列表

百度百科——初始化器


关于结构体初始化


这个是有原理的。
简单说一下吧:
1.要从数组开始说。
比如int a={0};其实系统只是把第一个数赋值为0,其他的数因为没有参数,系统自动初始化为0,对于int型来说。对于char来说就是‘\0x0’。其他的类型类似。
如果是int a={1};那么就是第一个数是1,其他的数是0。就是1,0,0,0.......
2.下面到结构。结构和数组有点类似;
比如:
typedef struct Text{
int a;
float b;
char c;
}text;
如果我写了text temp={1,2,“mmm“};那么就可以正常全部初始化成功,参数符合。
如果我写了text temp1={1};那么就会变成给这个结构固定的参数赋值,这里是给a赋值,其他的参数类似数组全部系统自己初始化。
那么如果写了text temp2={};?就会变成直接全部系统初始化。具体类似于int a={};
参考资料:http://blog.csdn.net/s_k_yliu/article/details/7020746
可以参考代码:
测试平台:Devc++
#include《stdio.h》
#include《math.h》
typedef struct Text{
int a;
float b;
char c;
}text;
int main(){
int a={};
int b={0};
int c={1};
int i;
for(i=0;i《10;i++)
printf(“%d“,a[i]);
printf(“\n“);
for(i=0;i《10;i++)
printf(“%d“,b[i]);
printf(“\n“);
for(i=0;i《10;i++)
printf(“%d“,c[i]);
printf(“\n“);
text temp={1,2.0,“shi“};
printf(“%d %f %s\n“,temp.a,temp.b,temp.c);
text temp1={1};
printf(“%d %d %s\n“,temp1.a,temp1.b,temp1.c);
text temp2={};
printf(“%d %d %s\n“,temp2.a,temp2.b,temp2.c);
return 0;
}
-结构体

c语言结构体初始化


这个结构体中包含三个变量,num name c
你的结构体初始化只初始化了 name
其余俩个变量没有初始化,所以会报错
你可以这样初始化 struct wo b(1,“jack“,’M’);
要注意对结构体中所有变量都要初始化,除非这个变量有缺省值
-初始化

C++ 结构体如何初始化


有以下几种方法:
1 使用构造函数。
在C++中,struct可以当做类(class)来使用,同样支持成员函数,构造函数,析构函数。所以可以写对应的构造函数,实现自由初始化。
2 定义时,按照成员变量位置,写初始化列表。
如struct test中有成员int a, char b, 和float c,那么初始化一个变量可以写作
struct test t1 = {100, ’A’, 1.23};
当初始化列表不全时,省略部分自动初始化为0,即
struct test t1 = {100, ’A’};

struct test t1 = {100, ’A’, 0};
等效。
3 部分编译器支持显示成员变量初始化,如g++。

struct test t1 = {.b= ’A’, .a=100};
没有涉及到的变量初始化为0.该种方式不是所有编译器都支持,当代码有跨平台需求时需谨慎使用。
-结构体