导航:首页 > 源码编译 > 数组赋值0与编译器版本

数组赋值0与编译器版本

发布时间:2022-05-21 01:03:31

‘壹’ C语言:数组没初始化也没赋值,编译系统是否能给没赋值的元素自动(数值型)赋0值或(字符型)赋'\0'值。

不会。利用下面这个程序测试一下就知道了:
#include <stdio.h>
#define Times 40

void main()
{
long x[Times];
int a;

// 测试系统会不会自动为数组赋值
for(a=0;a<Times;a++)
{
printf("第%2d个月:%d\n", a+1, x[a]);

if ((a!=0) && (a%10 == 0))
printf("\n");
}

// 求值
x[0] = 1;
x[1] = 1;
for(a=2;a<Times;a++)
x[a]=x[a-1]+x[a-2];

// 输出结果
for(a=0;a<Times;a++)
{
printf("第%2d个月:%d\n", a+1, x[a]);

if ((a!=0) && (a%10 == 0))
printf("\n");
}
}

‘贰’ C语言关于数组赋初值的问题char buff[10]={0};

需要注意的是:char
buff[5]={0};和char
buff[5]={'0'};是两个完全不同的概念:
char
buff[5]={0};的赋的是一个字符串的结束符,而不是一个字符'0';
char
buff[5]={'0'};才是给第一个字符赋值为'0'。
大家喜欢用char
buff[5]={0};主要是想制造一个空的字符串,
你调试一下就知道了:
如果这样写:
#include
void
main
{
char
buff[5]={0};
printf("%s",buff);
}
是没有任何输出的,因为printf遇到的buff的第一个字符就是个字符串的结束符'\0'
而如果这样写:
#include
void
main
{
char
buff[5]={'0'};
printf("%s",buff);
}
才会看到输出了一个'0'
这才是你理解的给第一个单元赋值为‘0’。
char
buff[5]={0};是一种定义空字符数组的严谨的写法!

‘叁’ C语言一维数组赋值方法

一位数组赋值的几种方式
int
a[10]={1,2,3,4,5,6,7,8,9,10};
.一般初始化,例:
int
a[10]={3,10,5,3,4,5,6,7,8,9};
int
array[5]={2,3,4,5,6};
其结果是给每一个数组元素都指定了初值。
2.部分元素初始化,其余元素均为零。
例:
int
a[10]={7,8,9,67,54};
仅给前5个元素赋初值,后5个元素初值为0。
3.全部元素均初始化为1。
int
a[10]
=
{1,1,1,1,1,1,1,1,1,1};
不允许简写为 int
a[10]={1};或int
b[10]={1*10};
同学们想一想上述定义a和b数组后,初始化结果是什么?
注意:当程序不给数组指定初始值时,编译器作如下处理:
(1)部分元素初始化,编译器自动为没有初始化的元素初始化为0。
(2)数值数组如果只定义不初始化,编译器不为数组自动指定初始值,即初值为一些随机值(值不确定)。
4.如果全部元素均指定初值,定义中可省略元素的个数。
例:
int
a[5]={9,28,3,4,5};可以写为:
int
a[
]={9,28,3,4,5};
数组元素的引用
c语言规定,不能整体引用数值数组,只能逐个引用数组元素;
元素引用方式:数组名[下标表达式]
例:a[0]
=
a[5]
+
a[7]
-
a[2*3]
“下标表达式”可以是任何非负整型数据。
特别强调:1.一个数组元素,实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。
2.在c语言中,数组作为一个整体,不能参加数据运算,只能对单个的元素进行处理。

‘肆’ 数组赋值0

用大括号为数组赋值,只限于声明静态数组时:
int a[10] = {0};
这样是可以的,但是在除了声明以外的时候,都是不符合语法的
int a[10];
a = {0}; //错误!
a[5] = {0]; //错误!

‘伍’ 在vs2015编译器中如何定义数组以及给数组直接赋值,语言vb

如图所示

‘陆’ C语言定义一个整型二维数组,若没有赋值,系统自动给的是0吗

C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0。
如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。

‘柒’ C语言 数组初始化为0 编译器是如何实现的

在编译时,变量分成两种形式存放,一种叫初始化段,一种叫未初始化段
如果你定义数组没有给出赋值语句中的初始值,该数组将保存在未初始化段;否则放入初始化段
编译器将记录初始化段中的数组起始地址、数据类型、元素个数,初始化数据在常量区的起始地址,数据个数
在程序运行时,系统先申请各段内存,然后针对初始化段进行初始化工作,方法是从常量段中取出初始化数据给你有初始值的变量赋值,假设你程序开设10个单元的数组,如果没有优化选项,常量段中将保存10个0用来初始化这个数组,如果有优化选项,可以合并相同常量,则仅保存一个0,并用这个0来初始化所有10个数组元素。

‘捌’ C语言里有没有把数组元素全部赋值为0的函数

方法一、在定义时赋初值

1、静态数组

int[3][3]={0};

2、动态数组

int**a=newint*[n];

for(inti=0;i<n;i++)

a[i]=newint[m](0);

方法二、在定义完后赋值

for(inti=0;i<n;i++)

for(intj=0;j<m;j++)

a[i][j]=0;

方法三、用一个循环吧数组所有元素设置为0:

intarr[100];

inti=0;

for(i=0;i<100;i++)

arr[i]=0;//ThiswillmakeallZERO

方法四、

1、全局变量和静态变量初始化时会自动被设置为0。如果们声明全局变量,那么在运行前会变成全0。

intarr[1024];//Thisisglobal

intmain(void)

//statements

2、对于局部数组简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。这是编译器自动完成的。可以这样写:

intmain(void)

intarr[1024]={0};//ThiswillmakeallZERO

//statements

3、可以用memset函数在程序开始时初始化数组。这条命令这在已经修改了数组之后又想将它重置为全0特别有用。

intarr[1024];

arr[5]=67;

memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO

‘玖’ c语言,当数组某些元素未被赋值时其值为多少

数组未初始化有两种情况:

1,未初始化,其值有两种可能:一种是全局数组,被编译器初始化为0。一种是局部数组,为随机数。

2, 已初始化,局部数组和全局数组,已初始化,未赋值的数组都会被赋值为0。

(9)数组赋值0与编译器版本扩展阅读:

数组:是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据元素的集合称为数组。

声明固定大小的数组:

有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:

1,建立公用数组,在模块的声明段用 Public语句声明数组。

2,建立模块级数组,在模块的声明段用 Private语句声明数组。

3,建立局部数组,在过程中用 Private语句声明数组。

参考资料来源:网络-数组



阅读全文

与数组赋值0与编译器版本相关的资料

热点内容
vimphp高亮 浏览:544
劫掠命令 浏览:371
单片机每个程序的含义 浏览:749
学好玩命令方块 浏览:953
手机解压两个分开的压缩包 浏览:963
程序员想调薪怎么和领导说 浏览:856
编译的底层实现 浏览:550
32位机器上编译出64的动态库 浏览:924
python办公数据类型 浏览:913
传统8051单片机介绍 浏览:628
app拉新公司如何运营 浏览:618
枪法pdf 浏览:62
ios如何设置安卓虚拟返回键 浏览:697
mysql命令执行sql 浏览:97
惠普内嵌服务器怎么打开 浏览:413
cmd命令查看网络 浏览:819
程序员秘密 浏览:932
如何宣传app引流 浏览:73
图说红楼梦中央编译 浏览:173
php查询赋值 浏览:271