第七章 数组和字符串
数组,就是按一定顺序排列,具有某种相同性质的同类型变量的集合。
一维数组的定义:
- 数据类型是数组中全体数组元素的数据类型
- 数组名用标识符表示,整型常量的表达式代表该数组具有的数组元素个数
- 数组元素的下标一律从0开始
- 编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素。用数组名表示该数组存储区的首地址。
注意:
- 如 int a[5], b[12];中,数组名a代表a数组的首地址,即a[0]存储单元的地址。
- 初始化的数据个数不能超过数组元素的个数
二维数组;
如 int a[ ][3] = {1, 2, 3, 4, 5, 6};--------可以省略第一维的的定义,但不能省略第二维的定义;根据初始化的数据个数和第二维的长度可以确定第一维的长度。
三维数组;
如char user[2][2][8] = {{"abc", "123"}, {"dce", "456"}};
数组存数组,再存一个数组,便是三维数组(字符串是数组)。
实例(部分代码):
1)
#include<string.h>
char p[] = "123";
char pp[] = "123";
char ppp[] = "1234";
printf("%d", p == pp);-----------------输出为地址,0即不相等。-->p和pp是首地址,两个数组首地址不一样
printf("%d", stcomp(p, pp) == 0);输出为1,即相等。-->stcomp(p, pp)处理过后,不再是地址,类似为%s。
2)
int a[2];---------------------------------在a首地址处开辟两个空间
a[0] = 1;-------------------------------在a处偏移0 个位置赋值为1
a[1] = 2;--------------------------------在a处偏移一个位置赋值为2
printf("%d \n", a);--------------------a处存的东西
printf("%d \n", &a[0]);----------------(a存的地址)处(再偏移0)处的地址
printf("%d \n", a[0]);------------------(a处的地址)处(再偏移0)处的值
printf(“%d \n”, &a[1]);----------------(a处的地址)处(再偏移1)处的地址
第八章 复杂数据类型
C语言数据类型:
- 基本类型:int,浮点型(float,double),char
- 指针类型
- 构造类型:数组,struct,union,enum
- void
声明结构体类型的变量
struct Employee personl = {"张三",1280,3500.5,“Beijing”,1000,“010-8888888”};
共用体:同一内存段可以用来存放几种不同类型的成员,但在某一瞬间只有一个成员起作用。
如:
a.i = 1;
a.c = 'a';
a.f = 1.5;
此时,只有a.f是有效的,而a.i和a.c已经失效。
枚举类型
C语言编译器把枚举元素当作是整型常量来处理,枚举中每个成员(标识符)结束符是“,”,不是“;”。