C语言学习与总结---第六章:数组(Array)

本文详细介绍了C语言中的数组,包括一维数组、二维数组和字符数组的概念、定义、内存存放、引用及初始化。特别讨论了字符数组的字符串处理,如结束标志'',以及相关字符串函数如puts、gets等的应用。
摘要由CSDN通过智能技术生成

数组:一组具有相同数据类型的数据的有序集合

6.1 一维数组

6.1.1 一维数组的定义

一般格式:

类型说明符  数组名[常量表达式];

例如,int[10]
定义了一个整形数组,数组名为a,包含10个元素
注意:
(1)数组名命名规则和变量相同
(2)在定义数组时,需要指定数组中元素的 个数,即数组长度。
注意数组元素的下标是从0开始的
a[0] a[1] a[2] a[3] a[4]
a[5] a[6] a[7] a[8] a[9]
(3)常量表达式可以包括常量和符号常量, 但不能包含变量。C语言不允许对数组的大小作动态定义。例如,下面这样定义数组是不行的:

int n;
scanf(“%d″,&n);
int a[n];

6.1.2 一维数组在内存中的存放

一维数组

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

数组元素1,2,3,…,10从低地址a[0]开始向高地址a[9]依次存放。
每个数据元素所占字节数就是基类型字节数
这句话的意思是,每个数组元素1,2,3…所占字节数为数组的类型int所占字节数,即sizeof(int)

6.1.3 一位数组的引用

引用方式

数组名[下标]

下标可以是整型常量或整型表达式
例如:

a[0]= a[5]+ a[7]- a[2*3]
#include<stdio.h>  
int main()  
{
     
    int i, a[10];  
    for (i = 0; i < 10; i++)  
        a[i] = i;   //将i的值赋给a[1]  
    for (i = 0; i < 10; i++)  
        printf("%d ", a[i]);   //输出数组a的每个元素  
    return 0;  
} 

6.1.4 一位数组的初始化

(1)在定义数组时对数组元素赋以初值。

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

经过上面的初始化后
a[0]= 0 a[1]= 1 a[2]= 2 a[3]= 3 a[4]= 4
a[5]= 5 a[6]= 6 a[7]= 7 a[8]= 8 a[9]= 9

(2)可以只给一部分元素赋值。

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

只给前面5个元素赋初值

(3)在对全部数组元素赋初值时,可以不指定数组长度。

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

可以写成

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

例,用数组来处理,求解Fibonacci数列

#include<stdio.h>  
int main()  
{
     
    int i, f[20] = {
    1,1 };  
    for (i = 2; i < 20; i++)  
        f[i] = f[i - 2] + f[i - 1];  
    for (i = 0; i < 20; i++)  
    {
     
        if (i % 5 == 0) printf("\n");  
        printf("%12d", f[i]);  
    }  
    printf("\n");  
    return 0;  
}  

运行结果
在这里插入图片描述

6.2 二维数组

6.2.1 二维数组的定义

一般形式为

类型说明符 数组名[常量表达式][常量表达式];

例如:

float a[3][4],b[5][10];

可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。

6.2.2 二维数组在内存中的存放

数组元素在内存中按行存放,即先顺序存放第零行的元素,再存放第一行的元素,再存放第二行的元素…

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

在这里插入图片描述

6.2.3 二维数组的引用

二维数组元素的表示形式为:

数组名[下标][下标]

例如:

	a[2][3];		a[2-1][2*2-1];

数组元素可以出现在表达式中,也可以被赋值,例如:

b[1][2] = a[2][3] / 2

在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内

6.2.4 二维数组的初始化

(1) 分行给二维数组赋初值。

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

(2) 将所有数据写在一个大括弧内,按数组排列的顺序对各元素赋初值。

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

(3) 可以对部分元素赋初值。

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

[ 1 0 0 5 0 0 9 0 0 ] \left[\begin{matrix} 1&0&0\\ 5&0&0\\ 9&0&0\\ \end{matrix}\right]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值