Mohican_1/21 C语言程序设计学习笔记—第六章 数组

本文详细介绍了C语言中的数组概念,包括一维数组、二维数组及字符数组的定义、初始化、引用方式等内容,并提供了实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第六章 数组

 

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

总结大全http://blog.youkuaiyun.com/tiandawu/article/details/52350631

Ø  初始化:

(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";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值