C语言 数组详解

文章详细介绍了数组的概念,强调了数组元素的类型一致性和内存的连续性。分别阐述了一维数组的定义、引用和初始化,包括静态数组的特性。接着讨论了二维数组,解释了行优先的存储顺序。对于字符数组,提到了它们在处理字符串中的作用以及初始化方式。最后,文章提到了字符串的输入输出函数以及一些常见的字符串处理函数,如puts、gets、strcat和strcpy。
摘要由CSDN通过智能技术生成

 数组:数组是用于储存多个相同类型数据的集合。

 条件:1.这些数的类型必须相同。2.这些数在内存中必须是连续存储的。              

一:一维数组

 一维数组定义:

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

  [ ]:数组运算符,单目运算符

  [常量表达式]:其中常量表达式为———元素个数———数组长度,下标从0开始。

  例如:int  a[6];

编译时分配连续内存,内存字节数=数组长度*sizeof.

a表示 数组名,a[0]表示内存首地址

a-> 0      a[0]
1         a[1]
2         a[2]
3         a[3]
 4        a[4]
 5        a[5]

  一维数组引用

1.数组必须先定义,后使用。

2.只能逐个引用数组元素,不能一次引用整个数组。

3.数组元素表示形式,数组名[下标],下标可以是常量或者整形表达式。

一维数组初始化

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

=>a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5;

特例

1.数组不初始化,其元素为随机值。

2.对static数组元素不赋初值,系统会自动赋值0

43当全部数组元素赋初值的时候,可以不指定数组长度。

static int a[3];

=>a[0]=0,a[1]=0,a[2]=0;

 4.只给部分元素赋初值,则未赋初值的自动赋值0;

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

=>a[0]=1,a[1]=3,a[2]=0;      

目录

一:一维数组

 一维数组定义:

  一维数组引用

一维数组初始化

二:二维数组

二维数组定义

二维数组的引用

二维数组元素的初始化

三:字符数组和字符串

字符数组

字符数据的初始化;

字符串:

字符串的输入与输出:


:二维数组

二维数组定义

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

                                          行数              列数

例如   int a[3][2];

数组元素的存放顺序

0              a[0][0]
1              a[0][1]
2              a[1][0]
3              a[1][1]
4              a[2][0]
5              a[2][1]

                                  数组元素的存放顺序

a[0][0]           a[0][1]                     原因:内存是一维的

a[1][0]           a[1][1]                     二维数组:按行序优先

a[2][0]           a[2][1]

任意元素a[i][j]在数组的位置计算公式为:

i*n+j

a——数组的起始地址     a[0]——0行0列的元素的地址。

二维数组的引用

形式: 数组名[下标][下标]

二维数组元素的初始化

1.分行初始化

2.按元素排列顺序初始化

三:字符数组和字符串

字符数组

定义;每个元素存一个字符,主要用来对字符串操作。

字符数据的初始化;

1:逐个字符赋值

char ch[5]={'H','e','l','l','o'}

Hello

                                             ch[0]      ch[1]     ch[2]     ch[3]    ch[4]

2:用字符串常量

char ch[6]={"Hello"};

Hello\0
 

                                   ch[0]      ch[1]       ch[2]       ch[3]     ch[4]       ch[5]   

字符串:

1.无字符串变量,用字符串数组处理字符串。

2.字符串结束标志;'\0';

字符串的输入与输出:

输入

用scanf函数

  1.输入单个字符:%c用循环语句;

  2.输入字符串 :%s printf("%s",str);

 用gets函数

   1.gets(str);

 

输c出

用printf函数

  1.输出单个字符:%c用循环语句;

  2.输出字符串 :%s printf("%s",str);

 用puts函数

   1.puts(str);

常用的字符串处理函数包含在string头文件中

字符串输出函数puts

格式:puts(字符数组1)

功能:向显示器输出字符串(输出完换行)

说明:字符数组必须以'\0'结尾

字符串输入函数gets

格式:gets(字符数组1)

功能:从键盘输入一个以回车结束的字符串放入字符数组中,并且自动加'\0';

说明:输入串的长度应该小于字符数组维数。

字符串连接函数strcat

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

功能:把字符数组2接到字符数组1后面。

返值:返回字符数组1的首地址。

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

           2.连接前,两串都以'\0'结束,连接后串1取消,新串后面加'\0';

字符串连接函数strcpy

格式:strcpy(字符数组1,字符串2)

功能:把字符串2,拷贝到字符数组1中。

返值:返回字符数组1的首地址。

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

           2.拷贝时'\0'一起拷贝;

           3.不能使用赋值语句为一个字符数组赋值。

字符串比较函数strcmp

格式: strcmp(字符串1,字符串2)

功能: 比较两个字符串\n比较规则: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\\0’为止\n返值: 返回int型整数,

a. 若字符串1\u003C 字符串2, 返回负整数

b. 若字符串1> 字符串2, 返回正整数

c. 若字符串1== 字符串2, 返回零

说明: 字符串比较不能用“==”,必须用strcmp

字符串长度函数strlen

字符串长度函数strlen

格式:strlen(字符数组)

功能:计算字符串长度

返值:返回字符串实际长度,不包括‘\0’在内

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值