c语言数组不同初始化方式的结果

第一种初始化方式:

#include <stdio.h>

int main()
{
    int numbers[5]={12,14};
    for (int i=0; i<5; i++) {
        printf("numbers[%d]=%d\n",i,numbers[i]);
    }

    return 0;
}

结果为:

numbers[0]=12
numbers[1]=14
numbers[2]=0
numbers[3]=0
numbers[4]=0

可见除指定赋值的元素外,其他数组元素均被自动初始化为0。

第二种初始化方式:

#include <stdio.h>

int main()
{
    int numbers[5];

    numbers[0]=12;
    numbers[1]=14;

    for (int i=0; i<5; i++) {
        printf("numbers[%d]=%d\n",i,numbers[i]);
    }
    return 0;

}

结果为:

numbers[0]=12
numbers[1]=14
numbers[2]=0
numbers[3]=0
numbers[4]=1450327064

明显看出number[4]的值并没有初始化为0,为number[4]所指向内存中的原数值,为不确定数字!

第三种初始化方式:

#include <stdio.h>

int main()
{
    int count=5;

    int numbers[count];

    numbers[0]=12;
    numbers[1]=14;

    for (int i=0; i<count; i++) {
        printf("numbers[%d]=%d\n",i,numbers[i]);
    }

    return 0;
}

结果为:

numbers[0]=12
numbers[1]=14
numbers[2]=1610543688
numbers[3]=32767
numbers[4]=1371647032

明显可见numbers[2],numbers[3],number[4]的值均不为0,为其指向内存中原有的数值,为不确定数字。

综上所述,c语言中,内存初始化时,不要依靠默认数组应被初始化为0来进行逻辑判断或逻辑运算,因为这样的结果具有很大的不确定性。

时间: 2024-07-30 13:44:37

c语言数组不同初始化方式的结果的相关文章

Java中数组的初始化方式

Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组元素分配初始值

C语言数组默认初始化问题

之前看到过,C语言int数组创立完成后,如果没有对其初始化,该数组所有元素默认值为0,今天在DEV上发现并不会这样,如果没有对它初始化,其默认值为随机数.如下: #include <stdio.h>int main(void){ int n; int c[10]; for(n=0;n<10;n++) { printf("%d\n",c[n]); }} 结果如下:

数组的初始化方式

今天对mem.h进行了小修改: #ifndef __MEM_H #define __MEM_H #include <stdio.h> void memdisp(char *srcptr); #define display(p) memdisp((char *)&(p)); #include "mem.c" #endif 查看未初始化的数组: 循规蹈矩的初始化数组的方法: 简单的初始化数组的方法: 错误的初始化数组的方法:(只有第一个元素被初始化为1,其余的按默认值0

java 数组的初始化方式

1静态初始化:这个值是多少就是多少,不能够改变 int[] arr = {1,2,3,4,5}; 2.动态初始化:不可变的数组   可变数组----->集合  ArrayList //这是一个指定的数组,但也可以不指定 //如果元素没有被赋值,默认以0来填充. int[] arr = new int[10]; 3.定义一个字符串数组 //默认为:null String[] strArr = new String[10]; 4.遍历数组的方法 class Demo{ public static v

6、C语言——数组

数组 一.数组的基础知识: 1.同一数组中的所有元素都属于同一种数据类型(int char float),数组元素用数组名和相应的下标来确定--一批类型相同的数据的集合 2.一个数组元素其实就是一个变量(可以称为带下标的变量) 二.一维数组: 一维数组的定义和引用[只有一个下标] 1.一维数组的定义格式: 类型名 数组名[常量表达式]: 常量表达式是由加减乘除所连接的表达式,不能是变量 数组名应该遵循用户定义标识符  定义数组有四个注意: 1)数组名属于用户定义标识符.要遵守标识符命名规则 2)

c语言字符数组的初始化问题

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理: 若小于数组 长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c 语言中,将字符串作为字符数组来处理.(c++中

数组 两种初始化方式及二维数组

数组: 静态数组  和  动态数组 1.写法: 定义:用来存储一组相同数据类型的元素 * * * * *   数组中存储的元素必须是相同的数据类型 数组的声明  初始化 Int[] a={1,2,3,4}; 数组的初始化: 静态初始化: //方式1 int[] a={'a',2,3,34,3,4,5,6,7,8,7,8,9,0,4,5,6,7,8};//声明的同时初始化 double[] a1={1.2f}; //方式2 int b[]={1,2,3,4}; //方式3: int[] c;  

C语言中数组的初始化

在C语言中,数组的初始化有以下几种方式: 1. 定义的时候同时初始化: int array[10] = {1,2,3,4,5}; 2. 定义的时候不指定数组大小,由初始化的数组元素来确定大小: int array[] = {1,2,3,4,5}; 3. 先定义变量,然后初始化.注意点:定义变量时必须制定数组的大小.此时只能对数组变量成员元素逐一赋值,不能批量赋值. //    int array[]; //错误用法 int array[12]; //    array = {1, 2, 3};

1.2 C语言---数组

1.2     C语言---数组 1.2.1    为什么引入数组? 数组就是数组成的一个组,数就是一个特定数据类型的变量,组就是说好多数放在了一起. 1.2.2    怎么定义数组? int a[4];     //定义了一个数组a,里面有4个int元素. 总结:数组中的所有元素必须是同一种数据类型,不可能在一个数组中存储两种数据类型的数. 1.2.3    怎么使用数组? 数组定义的时候作为整体进行定义.但是使用的时候不能作为整体来使用,使用时必须拆开使用数组中的 各个元素. 例如:int