谭浩强C语言第六章

第六章

数组简介,其中数组是一组有序数据的集合,下标从零开始,而且数组中的每一个元素的是相同的数据类型,要是int都是int,要是double都是double,是一种同构数据集合。

1.一维数组

定义与引用

定义一维数组的一般形式,类型说明符  数组名   [常量表达式],如:int a[10]

有关定义的几点说明:

  • 组名的命名规则和标识符一样
  • 定义数组时,需要指定数组的元素个数,方括号里的常量表达式用来表示元素的个数,即数组长度。指定a[10]表明数组内有10个元素,注意下标从0开始,这10个元素从0到9,没有a[10]。
  • 常量表达式中可以包括常量和符号常量,定义时这样定义是可以的,int a[5+3],而且在定义之后,系统开辟了连续的存储空间来存放数组元素

引用数组元素的表示形式如下:数组名[下标]

初始化

  • 定义一维数组时就对全部数组元素赋初值。例如:int a[5]={0,1,2,3,4,5};将数组内的个元素处置顺序放在一对花括号里面,数据之间用逗号分割
  • 可以只对数组内的一部分元素赋初值,如int a[8]={0,1,2,3,4,5};定义了a数组有八个元素,但是花括号内提供了六个初值,这表示只给前面的6个元素进行了赋值,后两个的元素默认为0
  • 如果想让数组内的元素的值均为0那么可以这样,int a[5]={0};也可以int a[5]={0,0,0,0,0};
  • 在对全部的数组元素赋初值时,由于数据的个数已经确定,可以不指定数组的长度int a[5]={0,1,2,3,4,5};和int a[ ]={0,1,2,3,4,5};等价

利用一维数组解决常见问题,排序问题,冒泡法

  1. 二维数组

定义与引用

定义一般形式    类型说明符  数组名   [常量表达式] [常量表达式];

二维数组的元素存储方式按行来存储的,先存第一行的,再存第二行的,以此类推,因此在多位数组的内存排序中,第一维的变化的下标变化的最慢,最右边的下标变化的最快

引用,二维数组的表示形式如下,

数组名 [下标][下标];

初始化

这样赋初值的意思是说a[0][0]=1,a[1][0]=5,a[2][0]=8

也可以对各行的某一元素赋初值,例如int a[3][4]={{1,2},{5,6},{8}};结果就是

  1. 2  0  0

5  6  0  0

8  0  0  0

④如果对数组的全部元素都赋初值,那么定义数组时的第一维的长度可以不指定,但是第二维的长度不能省略

  1. 字符数组

因为C语言里面没有字符串类型,也没有字符串变量,所以用字符数组来解决字符串相关问题。

定义的字符数组和前面提到过的一维数组和二位数组基本上没区别

字符数组的初始化,

  • char  a[10]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};
  • 另外一种就是自动确定数组的长度,但是这种情况还是要求提供的初值个数就是预定数组的长度。
  • 用字符串常量来初始化字符数组,例如:char str [10]=”I am happy”; char str [ ]={”I am happy”};此时的数组长度是11而不是10,因为有一个隐藏起来的\0,因此他与char  a[10]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’\0’};等价,不和char  a[10]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};等价。

若char s[10]={“china”};那么第六个之后的元素都是\0、

遇到多个\0时,只会输出第一个\0之前的内容。

引用字符数组的值,略

字符串

实际上,我们关心的是字符串的实际长度,而不是字符数组的长度,为了测定字符串的长度,c语言规定了一个字符串结束标志,以‘\0’作为字符串的结束标志,如果字符数组中钱就个字符都不是\0,而第十个是\0,那么c愿与你就会认为数组中有一个有效字符为9个的字符串,也就是说,遇到字符\0他就代表着字符串结束,把它前面的字符当作是一个字符串。

字符数组的输入和输出

输入输出有两种方法,一个是逐个字符的输入输出,用%c来输入输出一个字符,另一个是将这个字符串一次性的输入或输出,用%s,

说明:

  • 输出的字符不包括\0
  • 用%s输出时,printf函数中的输出项是字符数组名,不是数组元素名,写成这样是不对的printf(“%s”,c[0]);
  • 若数组长度大于字符串的实际长度,那么也只输出到遇\0结束,
  • 若存在多个\0那么在遇到第一个\0是输出停止
  • 可以用scanf输入一个字符串,scanf(“%s”,str);注意这里不加&只有一个数组名,因为数组名就是地址常量

一些处理字符串用的函数

  • Puts函数——用于输出字符串

一般形式puts(字符数组名)

  • Gets函数——用于输入字符串

一般形式gets(字符数组名)

  • Strcat函数——字符串连接函数

一般形式strcat(字符数组1,字符数组2

作用是将两个字符数组的字符串连接起来,就是把字符串2放在字符串1后面,结果放入字符数组1里面,函数调用的结果是字符数组1的地址

说明:字符数组1必须足够大,

  • Strcpy与strncpy——字符串复制函数、
  • Strcmp函数——字符串比较函数
  • Strlen函数——测量字符串长度的函数
  • Strlwr函数——转换为小写的函数
  • Strupr函数——转换为大写的函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值