1. 首页 > 科技

关于C语言结构体构造函数初始化的问题? c语言中结构体的作用

关于C语言结构体构造函数初始化的问题?c语言中结构体的作用

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.该种方式不是所有编译器都支持,当代码有跨平台需求时需谨慎使用。

C语言结构体里的结构体怎么初始化

中间又有结构体嵌套,你的格式应该是{{ ..{}..},{..{}..},...}

其实一般不这么初始化,定义全局静态变量或者指针,指针的话通过malloc分配内存,然后通过->访问结构体成员,静态变量的通过.访问成员,然后赋值。

关于结构体初始化

这个是有原理的。

简单说一下吧:

1.要从数组开始说。

比如int a[10]={0};其实系统只是把第一个数赋值为0,其他的数因为没有参数,系统自动初始化为0,对于int型来说。对于char来说就是‘\0x0’。其他的类型类似。

如果是int a[10]={1};那么就是第一个数是1,其他的数是0。就是1,0,0,0.......

2.下面到结构。结构和数组有点类似;

比如:

typedef struct Text{

int a;

float b;

char c[10];

}text;

如果我写了text temp={1,2,"mmm"};那么就可以正常全部初始化成功,参数符合。

如果我写了text temp1={1};那么就会变成给这个结构固定的参数赋值,这里是给a赋值,其他的参数类似数组全部系统自己初始化。

那么如果写了text temp2={};?就会变成直接全部系统初始化。具体类似于int a[10]={};

参考资料:blog.csdn/s_k_yliu/article/details/7020746

可以参考代码:

测试平台:Devc++

#include<stdio.h>

#include<math.h>

typedef struct Text{

int a;

float b;

char c[10];

}text;

int main(){

int a[10]={};

int b[10]={0};

int c[10]={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语言怎么结构数据初始化?

C语言结构体类型变量初始化分为 普通变量 和 数组变量 两种形式,说明如下:

1

2

3

4

5

6

7

8

9

typedefstruct

{

intx,y;

}direction;

direction dir={1,2} ; //普通变量,用一组{}括起来,成员变量数据间以逗号分隔,按变量定义顺序对应数值。未赋值成员,默认填0

direction move[8]={ //数组变量,整体用一组{}括起来,每一个元素按普通变量格式进行书写,各元素间用逗号分隔。未赋值元素,默认填0

    {0,0},{0,1},{1,0},{1,1},

    {2,0},{2,1},{3,0},{3,1}

};