C语言数组

使用const声明数组

有的时候需要把输入设置为只读,这样程序员只能从数组中检索值,而不能把新值写入数组。要创建只读数据库,应该用const声明和初始化数组。
const int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};

这样修改后,程序在运行过程中就不能修改该数组中的内容。
一旦声明为const便不能再给他赋值。

数组初始化的一些问题

初始化列表中的项数应与数组的大小一致。当初始化列表中的值少于数组元素个数时,编译器会把剩余的元素都初始化为零。
#include <stdio.h>
#define SIZE 4
int main()
{
    int some_date[SIZE] = {1492,1066};
    int i;

    printf("%2s%14s\n","i","some_date[i]");
    for(i = 0;i < SIZE;i++)
    {
         printf("%2d%14d",i,some_date[i]);
    }

    return 0;
}

输出结果就是:

i    some_date[i]
0                 1492
1                 1066
2                        0
3                        0


 注意:在for循环中的测试条件。由于人工计算容易出错,所以让计算机来计算数组的大小。sizeof运算符给出它的运算对象的大小(以字节为单位)。 
所以sizeof days是整个数组的大小(以字节为单位),sizeof days[0]是数组的一个元素的大小(以字节为单位)。整个数组的元素个数就是(sizeof days)/(sizeof days[0])。

c99制定初始化器

与传统的c初始化语法,在c99里面提供了一些方便于设计者初始化指定元素的方法:
int arr[6] = {0,0,0,0,0,212};   //若要指定arr[5]为212,传统语法要对6个元素全部初始化

int arr[6] = {[5] = 212};//而在c99里,只需这样就可以使arr[5]=212
上面两种初始化方法等价。

如果未指定数组大小会怎样?

int stuff[] = {1,[6] = 233};
int staff[] = {1,[6] = 233,23,2333};
编译器会把数组的大小设置为足够装得下初始化的值,所以stuff数组中有七个元素,各个元素的下标为0~6。而staff数组有九个元素。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值