C 数组学习-一维数组

C 数组

```C
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>


int main(void) {
	//数组由数据类型相同的数据元素组成
	int candy[365];
	//数组的初始化
	int test_array[5] = { 1,2,3,4,5 }; //ANSI之前加static
	int test_not_init[5];
#define MONTH 12
	//使用之前必须初始化,否则当前值是内存中原有的数据
	//这里的存储类别是auto,某且存储类别会初始化为0
	int days[MONTH] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	int index;
	//遍历
	for (index = 0; index < MONTH; index++) {

		printf("Month %2d has %2d days.\n", index + 1, days[index]);
	}

	for (index = 0; index < 5; index++) {
		printf("%d \n", test_not_init[index]);//未初始化的内存含有脏数据
	}

	//若要禁止修改数组的值 const int days[MONTH] = { 31,28,31,30,31,30,31,31,30,31,30,31 };


	//若初始化的数据少于数组长度,余者为0
	int test_array_short[5] = { 1,2,3 };
	for (index = 0; index < 5; index++) {
		printf("%d \n", test_array_short[index]);//未初始化的内存含有脏数据
	}

	int test_array_simple[] = { 1,2,3 };//编译器会自动推断长度
	//计算长度时可以用sizeof
	int test_array_simple_length = sizeof(test_array_simple) /sizeof( test_array_simple[0]);

	printf("The length of test_array_simple is %d \n", test_array_simple_length);

	//上述做法弊端 若初始化列表错误无法找出

	//C99特性 指定初始化器 在未初始化之前的元素的时候 可以初始化后面的元素
	 int test_designated_initializer[5] = { [4]=224 }; //注意使用vs studio时设置语言标准 文件.c
	//使用指定初始化未指定数组长度时 会把数组设置为足够装得下所有元素

	//C 不允许使用一个数组给另一个数组赋值
	//除了初始化之外不允许使用花括号列表赋值
	int test_init_1[] = { 1,2,4 };
	int test_init_2[3];
	// test_init_2 = { 1,2,4 }; 无法通过编译

	//下标越界测试 警告 可以通过编译可以运行  但是结果未知
	printf("下标越界测试");
	for (index = 0; index < 10; index++) {
		printf("index : %d value : %d \n", index, test_init_1[index]);


	}

	//VLA变长数组只在c99中规定 c11可选支持 其他标准只能使用常量表达式



}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值