数组、字符串

1 一维数组

数组:具有相同数据结构的元素组成的有序的数据集合。

数组元素:组成数组的数据。

数组下标:区分数组元素的特定序号。

C语言中,数组下标从0开始,第n个元素的下标是n-1,依次类推。

数组是一种构造类型的数据,其组成元素可以是任何数据类型(包括复合类型)。

数组变量需要先定义,后使用。定义数组变量时,系统会为数组在内存中分配一块连续的空间进行存储,空间的大小由数组的类型和大小而定。

2 一维数组的定义

只有一个下标的数组。

定义方式:

类型 数组名[常量表达式]

例如:

int a[10];

char str[50];

定义数组下标的常量表达式只能是整型常量,如:

#define 100 n

…

int m[100];

char str[n];

不能使用变量名作为数组定义时的下标,如:

int n=100;

char str[n];  /*错误的定义方式*/

数组赋初值:

int a[5]={1,2,3,4};  /*数组元素 a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=0*/

char s[5]={‘a’,’b’,’c’};

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

3 一维数组的引用

只能对数组的某一个元素进行单独的访问,引用形式如下:

数组名[下标]

这里的下标可以是一个整型常量,也可以是一个已赋值的整型变量、整型值表达式或者整型符号常量。

例如:

int a[5],n;

n=3;

a[0]=1;

a[n]=a[n-1]+a[n-2];

数组名a不能代表整个数组的具体值,只代表数组在内存中的首地址,即代表数组元素a[0]在内存中的地址。

数组名在程序中不能改变,不能对a进行表达式运算,如a++,a=n等等。

C语言本身不会对数组做边界检查,数组下标越界需要程序员自己设定。

4 多维数组的定义

由2个下标确定元素的数组称为二维数组,由3个或3个以上下标确定元素的数组称为多维数组。

二维数组定义方式如下:

类型 数组名[常量表达式1 ][常量表达式 2]

如:

int a[3][4]

这是一个3行4列矩阵

元素赋值:

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

也可以按行赋值:

int a[3][4]={

    {1,2,3,4},

    {5,6,7,8},

    {9,10,11,12}

};

2维数组可以理解为一维数组的一维数组。

N维数组可以理解为N-1维数组的一维数组。

5 多维数组的引用

只能对单个元素逐一进行引用。

例如:

int a[3][4],b[10][10],i,j;

a[i][j+1]=a[i][j-1]+a[i][j];

多维数组在内存中的地址是按行序排列的。

6 字符数组与字符串

(1) 字符数组

数组元素类型为字符型的数组,主要用于存储一串连续的字符。

char 数组名[];  /*定义一维字符数组*/

char 数组名[][]; /*定义二维字符数组*/


例如:

char str[10];
char str1[3][10];

赋值:

char str[7]={‘T’,’h’,’i’,’s’,’ ’,’i’,’s’};
char s[][2]={{‘T’,’h’},{‘a’,’b’}};


(2) 字符串

由双引号括起来的字符序列,例如:

“This is a test!”

程序在定义字符串时会在每个字符串的后面自动加上一个空操作符’/0’以示区别,但是在计算字符串长度时,’/0’不会计入字符串长度中。

’/0’作为字符串的结束标志而存在,’/0’会占用一个元素的存储空间,所以在定义字符串数组时,应在字符串长度基础上增加一个元素,存储’/0’。

char m[]={'a'};

char m[]={“a”};

以上2行代码表示的意思是不一样的,后者等价于

char m[]={'a','/0'};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值