C语言学习数组

一.数组的定义

类型 数组名[元素个数]

int a[6];

char b[24];

double c[3];

上面的几个类型,都占多少字节内存?

 

 

 • 元素数量必须是整数
• C99之前:元素数量必须是编译时刻确定的字面量

• 是一种容器(放东西的东西),特点是:
• 其中所有的元素具有相同的数据类型;
• 一旦创建,不能改变大小
• *(数组中的元素在内存中是连续依次排列的)

二.有效的下标范围
• 编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写

• 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃

• segmentation fault!
• 但是也可能运气好,没造成严重的后果
• 所以这是程序员的责任来保证程序只使⽤用有效的下标值:[0,数组的⼤大小-1]

• 循环跟数组的关系

实现一个执行10次的循环,通常是这么写:

for(i=0;i<10;i++){

      ......

}

#include <stdio.h>
#define num 10 
int main()
{
    int s[num];
    int i,sum=0;
    for(i=0;i<num;i++){
        printf("请输入第%d个学生成绩:",i+1);
        scanf("%d",&s[i]);
        sum +=s[i];
    }
    printf("平均分是%d
",sum/10);
    return 0;
 } 

三.数组的初始化

1.将数组中所有元素统一初始化为某个值,可以这么写:

int a[10]={0}; //将数组中所有元素初始化为0

2.如果是赋予不同的值,可以用逗号分隔开:

int a[10]={1,2,3,4,5,6,7,8,9,0};

3.还可以只给一部分赋值,那么其他元素将自动初始化为0;

int a[10]={1,2,3,4,5};

4.C99增加了一种新特性:指定初始化元素:

int a[10]={[3]=3,  [5]=5, [8]=8};

#include <stdio.h>

int main()
{
    int a[10] = {[3] = 3, [5] = 5, [8] = 8};
    int i;

    for (i = 0; i < 10; i++)
    {
        printf("%d
", a[i]);
    }

    printf("%d
", sizeof(a));

    return 0;
}

原文地址:https://www.cnblogs.com/guoweilf/p/11546937.html