数组-复习

知识来源:谭浩强《c程序设计》第六章

1.基础知识

-数组元素是有序的,一个数组中所有元素属于同一类型

-数组是从0开始的,不是从1开始的。

-对于整数型数组来说,结尾字符为整数;对于字符型数组来说,结尾字符为\0,占一个空间。

2.一维数组

  ①定义形式

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

②常量表达式可以包括常量和符号常量(如3+5),但是不能做动态定义,不能根据程序运行中变量值定义。

③初始化方法:可以全部赋值或者部分赋值。

如果给全部元素赋值,可以根据数据个数确定数组长度。如int a[]={1,2,3};

④对于未初始化的数组元素,系统会自动初始化。字符型数组初始化为’\0’,指针型数组初始化为NULL,其他数组初始化为0。

3.二维数组

①一般定义形式

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

②二维数组中元素排列的顺序是按行存放的,即先存放第一行,再依次存放其他行元素。

在内存中,各元素是连续存放的,不是二维的,是线性的。

③初始化方法

(1)分行赋值

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

(2)全部写在一个括号里,按照内存中排列顺序对各元素赋初值

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

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

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

(4)如果对全部元素赋初值,则定义时第一维长度可以不指定,但第二维长度不能省略

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

4.字符数组

①定义方式与定义数值型数组类似

例:char c[2];

c[0]=’i’;c[1]=’o’

②因为字符型数据是以整数形式(ASCII码)存放的,因此可以用整形数组来存放字符数据。

int c[10];

c[0]=’a’;

③初始化方法

(1)逐个赋值

char c[5]={‘l’,’0’,’v’,’e’};

    如果初值个数和预定数组长度相同,定义时可以省略数组长度。

(2)字符串形式(在C语言中,将字符串作为字符数组来处理。)

char str[]=”I love C”;

④字符串以’\0’作为结束标志,把它前边的字符组成一个字符串。

用字符数组存储字符串常量时会自动加一个’\0’作为结束符。

⑤下面两种定义形式等价

char c[]={‘l’,’o’,’v’,’e’,’\0’};

char c[]={“love”};

⑥字符数组不要求最后一个字符为’\0’,甚至可以不包括’\0’。

为了便于测定字符串长度,常常在字符数组后加一个’\0’。

⑦字符数组的输出与输入

-逐个字符输出:%c

-输出整个字符串:%s

-可以用scanf函数输入一个字符串。scanf(“%s”,c);

5.字符串处理函数

(1)puts函数——输出字符串的函数

--形式:  puts(字符数组)

--可以包含转义字符,输出完字符串后换行(把结束的’\0’换成’\n’)

 

(2)gets函数——输入字符串的函数

--形式:  gets(字符数组)

注:puts和gets只能处理一个字符串

 

(3)strcat函数——字符串连接函数

--形式:strcat(字符数组1,字符数组2)

--把字符串2接到字符串1的后面,结果放在字符数组1中,得到字符数组1的地址。

--连接时把字符串1后面的’\0’取消,只在新字符串的最后保留。

 

(4)strcpy和strncpy函数——字符串复制函数

--形式   strcpy(字符数组1,字符串2)   

-字符串2可以是字符数组名,也可以是字符串常量

-作用:将字符串2复制到字符数组1中

--字符数组1的长度不应小于字符串2的长度

--如果复制前没有对str1数组初始化,除str2复制过去的内容和其后的’\0’,其后字节内容不能确定

--可以用strncpy将字符串2前面几个字符复制到字符数组1中去。

例: strncpy(str1,str2,2);   把str2前两个字符复制过去取代str1前两个字符。

--不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,不能改变值。

Str1=”China”;

Str1=Str2;都是错误的

 

(5)strcmp函数——字符串比较函数

--形式   strcmp(字符串1,字符串2)

strcmp(“China”,”korea”);

  --规则:将两个字符串自左往右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。

--如果出现不同字符,以第一对不相同的字符比较结果为准。若相同,函数值为0;若str1>str2,函数值是正整数;若str1<str2,函数值是负整数

--如果两个字符串都由英文字母组成,则在英文字典中位置在后面的为“大”。

(6)strlen函数——测字符串长度的函数

--形式   strlen(字符数组)

--不包括’\0’,可以直接测定字符串常量的长度。

 

 

 

posted @   来自带专的屑  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示