
正文
c语言定义数组默认不为0,c语言如何定义数组里的数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言数组里面没有定义的量默认是0吗
c语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
可以,c语言中无长度数组在声明时,一定要赋初值,系统根据数据的多少自动定义数组的长度。当然也可以赋0值,但也只有一个元素,类似于int a[1],a[0]={0}。
不论在任何编程语言,如果没有定义起始下标默认都是从0开始 在C语言中不能自定义起始下标,要想下标与数组元素的序号一一对应只能舍弃第一个存储空间。
没有赋值的就是随机值,系统不会对它们填默认值。
静态全局变量当定义在函数内的全局变量,有static标记时,默认初始化为0值;非静态全局变量没有默认初始值,C语言规定初始化值为随机值,但具体的实现由编译器决定。
相关问答
Q1: c语言定义一维数组,元素未初始化,那数组元素默认值是什么
一维数组元素的初始化默认值与所定义的数组类型有关,不同的数组未初始化的默认值也不同。
普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
数组未初始化有两种情况:1,未初始化,其值有两种可能:一种是全局数组,被编译器初始化为0。一种是局部数组,为随机数。2, 已初始化,局部数组和全局数组,已初始化,未赋值的数组都会被赋值为0。
Q2: c语言中,定义一个数组,其中每个变量的初始值是0吗?
1、一维数组元素的初始化默认值与所定义的数组类型有关,不同的数组未初始化的默认值也不同。
2、全局变量和静态变量初始化时会自动被设置为0。如果们声明全局变量,那么在运行前会变成全0。intarr[1024];//Thisisglobal intmain(void){ //statements } 对于局部数组简写的初始化语法。
3、普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
4、如下图所示。然后,可以对数组进行初始化,在花括号{}中输入即可。如果初始化输入的数字未达到定义长度,后面则默认初始化为0。在数组定义和初始化后面要加上分号,如下图所示,点击输入即可。
5、没有为全局变量赋初始值的,其初始值默认为0。2)局部变量在声明时,可以为其赋初始值,如int MAXN=999;数组元素在初始化时,未明确赋值的部分,均有初始值为0。
6、因为变量是可以变动的,定义一个变量不初始化时,变量会是一个随机数,进行计算了的时候,就会引用那个随机数进行计算,会有误差。
Q3: c语言怎么给2维数组初始化为不为0的数据
应该是这个数组太大了,在我的电脑上直接就显示段错误。如果把它改成int map[100][100]={1},那么map[0][0]=1了。
赋成0和-1可以用 memset办到 还有一些特殊的整数也能用memset办到 但是赋成1001,我可以明确地说,没办法用除了循环以外(没有现成函数)的较短的代码办到。
memset是方便的选择,但对于非0不是全适合,特别还是二维数组 不用for,你可以用while循环。
关于c语言定义数组默认不为0和c语言如何定义数组里的数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







