C 数组及字符串

2018-01-03  本文已影响4人  CoderHong

C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

声明一个数组

格式:
type arrayName [ arraySize ];

两种方式声明

1. 只是声明一个数组
double balance[5];必须制定数组的可存储的元素个数

2. 声明的同时初始化
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
这种方式可以不需要执行数组的元素个数
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

数组的内存分配,从0元素开始各元素的地址一次递增。

数组的内存分配

数组指针

数组名是一个指向数组中第一个元素的常量指针

在下面的声明中

double balance[50];

balance 是一个指向 &balance[0] 的指针,即数组 balance 的第一个元素的地址。

因此,下面的程序片段把 p 赋值为 balance 的第一个元素的地址:

double *p;
double balance[10];

p = balance;

使用数组名作为常量指针是合法的,反之亦然。因此,*(balance + 4) 是一种访问 balance[4] 数据的合法方式

一旦您把第一个元素的地址存储在 p 中,您就可以使用 p、(p+1)、*(p+2) 等来访问数组元素。下面的实例演示了上面讨论到的这些概念:

使用指针的数组值
*(p + 0) : 1000.000000
*(p + 1) : 2.000000
*(p + 2) : 3.400000
*(p + 3) : 17.000000
*(p + 4) : 50.000000
使用 balance 作为地址的数组值
*(balance + 0) : 1000.000000
*(balance + 1) : 2.000000
*(balance + 2) : 3.400000
*(balance + 3) : 17.000000
*(balance + 4) : 50.000000

C字符串

在 C 语言中,字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。

下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

依据数组初始化规则,您可以把上面的语句写成以下语句:

char greeting[] = "Hello";

字符串简写方式

char *name = "coderhong";

本质就是一个char 类型的指针指向了一个{'c', 'o', 'd', 'e', 'r', 'h', 'o', 'n', 'g', '\n'};字符数组。

上一篇 下一篇

猜你喜欢

热点阅读