【C语言】全局/局部数组的初始值和初始化

写题目的时候以为数组的初始值都是0,结果提交答案出错TvT
后来一查发现全局数组和局部数组的初始值结果还不一样

先来看一段代码

#include<stdio.h>
int a[5];
int main()
{
    
    
	int i;
    int b[5];
    printf("全局数组:\n");
    for(i=0;i<5;i++){
    
    
    	printf("%d ",a[i]);
    }
    printf("\n");
     printf("局部数组:\n");
    for(i=0;i<5;i++){
    
    
    	printf("%d ",b[i]);
    }
    return 0;
}

运行结果如下:
在这里插入图片描述
由此可见

  • 全局数组的初始值为0
  • 局部数组的初始值为随机数

数组初始化

使用函数memset

memset函数用法
eg:将数组初始化为0

char str[10];
memset(str, 0, sizeof(str));

赋值

  1. 直接给每个元素赋值
    int arr[5] = {1,2,3,4,5};
  2. 给一部分赋值,后面的全部为0
    int arr[5] = {1,2};
  3. 由赋值参数个数决定数组的个数
    int arr[] = {1,2};
  4. 数组元素的值是随机分配的
    int array[4] = {};
  5. 数组元素初始化为0
    int array[4] = {0};

猜你喜欢

转载自blog.csdn.net/weixin_45867159/article/details/114003079