C语言基础4

2016-07-23  本文已影响14人  克里斯里亚诺罗纳尔多

⼀维数组

数组是⼀种由相同数据类型组成的构造类型。数组的每个成员 称为⼀个 数组元素

• 最简单的数组是 ⼀维数组

⼀维数组的定义:

类型说明符 数组名[常量表达式] = {值1,值2...};


⼀维数组的定义

如何定义⼀个⼀维数组?

数据类型    数组名字      [元素个数];

  int            ages            [10];


数组的初始化

在数据定义的同时对数组进⾏初始化

⽐如: int ages[2] = {3, 5};

数组中元素的访问

通过数组名+下标去访问数组中的元素

⽐如: ages[0];

数组定义举例

// 声明⼀个整型数组

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

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

int c[5] = {0};

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

⽰例:

// 整型数组

int a[5] = {0};

// 浮点型数组

float b[] = {2.10, 3.22};

// 字符数组

char str[] = "iPhone";

数组元素

数组元素的 访问:数组名 +下标

数组下标:数组元素在数组中的序号。从 0 开始,到

数组元素个数-1;下标可以是常量,也可以是变量

数组元素的访问

访问数组中的元素时,下标可以为变量

⽐如: age[i];

访问数组中的元素可以采⽤for循环,

我们把这个操作称作遍历

注意:使⽤数组时,注意数组不能越界的问题

注意事项

系统不会检测 数组元素的下标 是否 越界,编程时,必须保证数组

下标 不能 越界

不能这样定义数组

int array[] = {}; 或者 int array[2] = {1, 2, 3};

数组是⼀个整体,不能 直接参加运算只能 单个元素进⾏处理,

通常⽤到数组的地⽅都会⽤到循环

⼆、数组排序

冒泡排序

使⽤数组时,很多时候需要将数组中的元素按照⼀定条件进⾏排

冒泡排序 是⽐较 常见 的排序算法

因为其原理跟 ⽔底⽓泡上升⾄⽔⾯ 很相似⽽得名

冒泡排序涉及到 双循环,外层循环控制趟数内层循环控制⽐

较次数



字符数组

⽤于存放字符变量的数组称为字符数组

字符数组属于⼀维数组,定义⽅式与普通⼀维数组相似,只是

数据的类型是char

字符数组的定义:

char name[5] = {'a', 'b', 'c', 'd', 'e'};

char name[] = "iPhone";

操作字符数组的函数

有’\0’结束标识的字符数组也称为 字符串

系统提供了很多 字符串处理函数

 strlen() 计算字符串长度

 strcpy() 字符串拷贝

 strcat() 字符串拼接

 strcmp() 字符串⽐较

注意事项

字符串所占的空间 ⾄少要⽐ 字符串长度⼤1,因为字符串结尾

默认有’\0’,占⼀个字节, 系统提供的字符串处理函数都是根据

‘\0’ 来判断字符串是否结束

char str[] = {'o', 'k'};

char str = “ok”;

注意:在printf输出字符串时,占位符⽤%s


宏定义

宏定义是预编译功能的⼀种

注意: 预编译⼜称为预处理, 是为编译做的预备⼯作的阶段。

处理#开头的指令, ⽐如拷贝#include包含的⽂件代码,

#define宏定义的替换,条件编译等

使⽤宏定义的好处:可提⾼程序的通⽤性和易读性,减少不⼀致性,

减少输⼊错误和便于修改。例如:数组的元素个数常⽤宏定义

#define PI 3.1415926

#define 是宏定义指令, PI代表宏名, 3.1415926是预编译时会被替

换的内容。

注意事项

#define MUL(A, B) ((A) * (B))

宏定义只是替代的过程,在定义有参数的宏时,运算符要有(),

避免运算优先级的影响




总结

数组 通常与 循环 结合使⽤

数组下标0开始 最⼤到 数组容量-1

⼀定要注意下标越界问题

字符串数组在 定义 的时候⼀定要 多留⼀个元素位置留

给’\0

定义宏时,加括号是为了防⽌受操作符优先级的影响

上一篇下一篇

猜你喜欢

热点阅读