一、一维数组
1、数组:具有相同类型的数据的有序集合,并用唯一的名字来标识。
2、 编译器在编译阶段为其分配内存空间。C99允许使用变长数组,数组在运行时确定,C89则必须指定长度。
3、 数组的所有 元素占据连续的内存空间,在内存中式线性存放的,保存
4、数组所需的内存空间直接与数据类型和数组长度有关。
数组占用的内存空间 = sizeof(数据类型)*数组长度。
5、数组初始化:数据类型 数组名[数组长度数] = {...};
数据类型 数组名[]= {...};
数组类型 数组名[数组长度数];对每个元素赋值。
6、C不检查数组是否越界,程序可以在两边越界。程序员应自己加入越界检查。数组可以越界使用,但初始化时不允许。
7、定义数组形参的方法:指针、定长数组、无尺寸数组
8、作为函数参数的数组名
##数组名是指向元素类型的指针,数组名的值是一个指针常量。
##sizeof问题。
##数组与形参的问题
二、字符串
1、字符串是字符数组的一种特殊形式,唯一的区别在于它是作为一个整体操作,而普通数组则不能。最终差别在于NULL('\0')。
2、字符串的初始化
3、字符串的输入与输出:
输出 输入
printf("%s", str); scanf("%s", str);
puts(str); gets(str);
4、字符串运算:
strcpy(str1, str2) strcmp(str1,str2) strlen(str1)
strcat(str1, str2) strchr(str1, c) strstr(str1, str2)
使用函数时的注意事项:内存空间的大小
5、字符串和字符数组的区别
三、多维数组
1、存储顺序
2、初始化
(1) int a[2][3]={1,2,3,4,5,6}
(2) int a[2][3];
a[0][0]=1;a[0][1]=1;a[0][0]=1;a[0][2]=1;a[1][0]=1;...
(3) a[2][3]={
{1,2,3},
{4,5,6}
};
思考:
上述三种赋值方式,那种比较好,为什么?
3、作为函数参数的多维数组
4、数组长度自动计算
在多维数组中,只有第1维才能根据初始化列表缺省地提供,剩余的几个维必须显示地写出,这样编译器就能推断出每个子数组维数的长度。
思考:
为什么其他维的大小无法通过对它的最长初始列表的初始值个数进行计数自动推断出来呢?
阅读(569) | 评论(0) | 转发(0) |