欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言程序设计学习笔记--数组

程序员文章站 2022-05-09 18:29:15
C语言程序设计学习笔记--数组。 6.1数组 (1)是有序数据的集合,数据元素类型相同,顺序存储,占用相邻的存储空间。 (2)数组必须先定义后引用 (3)C语言只能逐个引用...

C语言程序设计学习笔记--数组。

6.1数组

(1)是有序数据的集合,数据元素类型相同,顺序存储,占用相邻的存储空间。

(2)数组必须先定义后引用

(3)C语言只能逐个引用数组元素,不能一次引用整个数组。

(4)数组引用是“数组名+下标”引用,数组下标均为整数。

(5)静态数组变量定义时编译器自动初始化数据元素为0,

动态数组变量在程序执行时分配存储空间,在未被赋值初始化之前其值随机。

6.2一维数组:

1.定义: 类型符 数组名 【常量表达式】

2.说明:(1)常量表达式用来说明数组长度,从a[0]开始。

(2)可以包含常量和符号常量,a[5+3]是合法的,不允许对数组大小做动态定义

(3)可变长数组,在被调用函数(不包括主函数)中定义数组表达式可以为非常量表达式 。调用时候可变,执行时候不变。 若数组为静态存储,则不可用。

Static int a[2*n] 不可用

3.引用: 数组名 【下标】

4.初始化:在定义数组的同时给数组元素赋值

(1) 定义时赋值

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

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

Int a [4] = {1,2,6};

(3)如果一个数组中全部数组值为0

Int a [6 ] ={0 };

(4)在对全部元素赋值时,个数确定,长度可以不赋值。

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

6.3二维数组

1.定义:类型符 数组名 【常量表达式】【常量表达式】

2.说明:(1)二维数组按行存放

3.引用:数组名 【下标】【下标】

4.初始化:

(1)分行进行初始化

inta[2][3]={{1,2,3},{4,5,6}};

(2)不分行的初始化
  int a[2][3]={ 1,2,3,4,5,6};

  ⑶ 为部分数组元素初始化
  static inta[2][3]={{1,2},{4}};
  第一行只有2个初值,按顺序分别赋给a[0][0]和a[0][1];第二行的初值4赋给a[1][0]。由于存储类型是static,故其它数组元素的初值为0。注:某些C语言系统(如:TurboC)中,存储类型不是static的变量或数组的初值也是0。
  static int a[2][3]={ 1,2};
 只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0。
  ⑷ 可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数 和第2维的长度可以确定第一维的长度。
  int a[ ][3]={ 1,2,3,4,5,6};
  a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。

6.4字符数组

1.定义:

用来存放字符量的数组称为字符数组。 Char c[10]

2.引用:

引用字符数组中的一个元素来引用一个字符,通过下标引用

3.字符串和字符串结束标志:

? 在C语言中,是将字符串作为字符数组来处理的。

? C系统在用字符数组存储字符串常量时会自动加一个‘ \ 0 ’ 作为结束符。例如“C program”共有9个字符。字符串是存放在一维数组中的,在数组中他占10个字节,最后一个字节‘\0'是系统自动加上的。有个结束标志‘\0'后,字符数组的长度就显得不那么重要了。在程序中往往依靠检测‘\0'的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串的长度。

4.字符数组的输入输出:

(1)逐个字符输入,例如

char a[5];

for(int i=0;i<5;i++)

{

scanf("%c",&a[i]); //注意:不能少了地址符&

//a[i]=getchar();

}

(2)采用scanf函数输入,例如

char a[5];

scanf("%s",a); //注意:不能添加地址符&,因为数组名本身即为地址

注意:

? a前面没有地址符&

? 采用scanf输入,一旦遇到空格OR回车OR制表符等,即表示输入结束。如我们从键盘上输入 ab cde,那么数组a的值为:ab

? 采用gets函数输入,例如

char a[5];

gets(a);

注意:

采用gets()函数输入,仅在遇到回车时,才表示输入结束。如我们从键盘上输入ab cde,则输入a的值为:ab cde

? 使用字符串处理:

(1)puts

(2)gets

(3)strcat

(4)strcpy和strncpy

(5)stremp

(6)strupr

? 初始化:

(1) 分别对每一个元素进行赋值操作

char c[0]={'c', ' ', 'p', 'r','o', 'g', 'r', 'a','m'};

赋值后各元素的值为:

c[0]的值为‘c’

c[1]的值为‘’

c[2]的值为‘p’

c[3]的值为‘r’

c[4]的值为‘0’

c[5]的值为‘g’

c[6]的值为‘r’

c[7]的值为‘a’

c[8]的值为‘m’

其中c[9]未赋值,这是由系统自动赋予0值。当对全体元素赋初值时也可以省去长度说明。例如:

char c[]={'c', ' ', 'p', 'r', 'o', 'g', 'r','a', 'm' };

这时C数组的长度自动定为9。

(2) 用字符串的方式对数组作初始化赋值。例如:

char c[]={'c', '','p','r','o','g','r','a','m'};可写为: char c[]={"C program"};

或去掉{}写为:char c[]="C program";