结构体数组初始化为0的方法

大家好,今天来介绍结构体数组初始化为0的方法(c 中结构体数组的初始化问题有哪些)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

c语言中怎么把一维数组初始化为全零啊不用循环

下面3种方法:

1.int arr[10]={0};

如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,当只将第一个元素初始化为0时,编译器会自动将其他元素设为0 (就像前一句说的那样)。

2.int arr[31]={};

3.用memset函数在程序开始时初始化数组。比如:

int arr[1024];

memset(arr, 0, 1024); //清零

memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针吵肢或是数组,c:是赋给buffer的值,count:是buffer的长度。

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。

memset:作用是在一段内存块中填充某个给定的盯碰缓值,它是对较大的结构体或数组进行清零凯模操作的一种最快方法 ,它通常为新申请的内存做初始化工作。

memset-

结构体数组初始化为0的方法

C++中结构体数组的初始化问题

第一个问题,不能这样初始帆镇化,需要
inflatable
a={0};集合中至少需要1个元态禅粗素方可作为袭销初始化列表,专业会将name、volume、price的所有字节全部初始化为0。
第二个问题,如果结构体包含有string
a;那么就不能使用初始化列表初始化了。
也就是说
inflatable
a={0}会编译不成功,因为string类有构造函数,具备有构造函数的成员的结构体不能用={0}的方式进行初始化。

关于结构体初始化

这个是有原理的。
简单说一下吧:
1.要从数册氏组开始搭姿携说。
比如int a[10]={0};其实系统只是把第一个数赋值为0,其他的数因为没有参数,系统自动初始化为0,对于int型来说。对于char来说就是‘x0’。其他的类型类似。
如果是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]={};
http://blog.csdn.net/s_k_yliu/article/details/7020746
可以参考代码:
测试平台:Devc++
#include
#include
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 %sn”,temp.a,temp.b,temp.c);
text temp1={1};
printf(“%d %d %sn”,temp1.a,temp1.b,temp1.c);
text temp2={};
printf(“%d %d %sn”,temp2.a,temp2.b,temp2.c);
return 0;
}

c# 结构体 初始化

你直接使悉搜用new运算符就可以对数据成员初始化了。

注:带参构造函数必须初始化结构所有数据成员。所以如你所上的代码就做到了这点。现只需使用new运算符调用带参的构造函数来声明一个结构变量。

publicstructCrossing
{
publicCrossing(inti)
睁链历{
flow_in=newfloat[4];
returning_ratio=newfloat[4,3];
tongxing=newfloat[4,3];
}
publicfloat[]flow_in;
publicfloat[,]returning_ratio;
publicfloat[,]tongxing;
};

classProgram
{
staticvoidMain(string[]args)
{
唤坦Crossingcro=newCrossing(0);//调用带参的构造函数来初始化结构成员
Console.WriteLine(cro.flow_in[0]);//此时构造函数体所有数组初始化为0
Console.ReadKey();
}
}

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就运行了特他使用的每一个单元的初始化部分。每一个单元仅初始化一次 。

来源:——初始并隐化

——初始化列表

——初始化器

Published by

风君子

独自遨游何稽首 揭天掀地慰生平