c语言数组赋值初始化(结构体数组初始化赋值)

admin 467 0

各位老铁们好,相信很多人对c语言数组赋值初始化都不是特别的了解,因此呢,今天就来为大家分享下关于c语言数组赋值初始化以及结构体数组初始化赋值的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

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

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

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

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:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法,它通常为新申请的内存做初始化工作。

二、C语言字符数组如何初始化

C语言允许用字符串的方式对数组作初始化赋值。例如:

static char c[]={'c','','p','r','o','g','r','a','m'};可写为:

static char c[]={"C program"};或去掉{}写为:

当对全体元素赋初值时也可以省去长度说明。例如:static char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};这时C数组的长度自动定为9。

1.可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

三、c语言中一维数组的初始化是什么意思,有什么作用

1、初始化就是在一维数组相对应的内存空间里去初始化,比如把它们的变量值全部初始,即清除初始为零,为空!当然初始化也可以有另外的意义,一般来说初始是这样的.即还原到原始值

2、如某变量是一个特定值,初始化后将返回你设定的特定值

四、在C语言编程中,定义一个数组时要不要初始化

不是不能初始化,是初始化的不对。另外,数组最好用memset初始化。

(1)在定义数组时对数组元素赋以初值。如:

static int a[10]={0,1,2,3,4,5,6,7,8,9};

经过上面的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。

(2)初始化时可以只对一部分元素赋初值。例如:

static int a[10]={0,1,2,3,4};

定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。

除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。例 int[] a={1,2,3};//静态初始化基本类型数组

Man[] mans={new Man(1,1),new Man(2,2)};//静态初始化引用类型数组

数组定义与为数组元素分配空间并赋值的操作分开进行。int[] a1=new int[2];//动态初始化元素,先分配空间。

数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

实例:int a2[]=new int[2];//默认值0,0

boolean[] b=new boolean[2];//默认值 false,false

String[] s=new String[2];//默认值null

五、c语言结构体中的一个char数组怎么赋值

1、(1)用字符常量逐个初始化数组。例如:

2、char a[8]={'i','l','o','v','e','y','o','u'};

3、把8个字符依次分别赋给c[0]~c[7]这8个元素。

4、如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

5、如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

6、如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

7、例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

8、这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:

9、char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},

10、{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。

11、(2)字符串常量初始化数组。例如:

12、char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

13、可写为:char c[]={"C program"};

14、或去掉{}写为:char c[]="C program";

15、注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

16、char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

17、其定义的一般形式是:char数组名[数据长度]

18、c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

19、以上定义了c为字符数组,包含10个元素。

20、由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

21、但这时每个数组元素占2个字节的内存单元,浪费存储空间。

22、字符数组也可以是二维或多维数组,例如:

23、字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

24、(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

25、scanf("%c",&a<i>);

26、(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

27、输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

28、(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

29、printf("%c",a<i>);

30、(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];

六、c语言 定义一个整型数组,并未初始化数据.

1、在声明变量的同时赋值就是初始化。

2、而在其后的赋值语句就不是初始化。

3、一般来说,如果你不给变量一个确定的值,就直接引用它,则系统不能保证运行的唯一性,而这是我们程序所不允许的。所以我们一般用初始化的方法来确定其值。

4、引用memset(str,sizeof(str),0);

5、i就不是通过初始化,而是用赋值的方法确定值的。

6、扩展到数组中,也是如此,如果你在引用数组元素前不把它的值确定下来,程序运行就可能不确定。

7、因为确定数组元素值的方法有两个:初始化和赋值,所以初不初始化要视情况而定。

c语言数组赋值初始化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于结构体数组初始化赋值、c语言数组赋值初始化的信息别忘了在本站进行查找哦。