C语言数组

来源:互联网 发布:it网络设备推广方案 编辑:程序博客网 时间:2024/06/14 02:07

使用const声明数组

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

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

数组初始化的一些问题

初始化列表中的项数应与数组的大小一致。当初始化列表中的值少于数组元素个数时,编译器会把剩余的元素都初始化为零。
#include <stdio.h>#define SIZE 4int 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
原创粉丝点击