1.计算数组元素个数:数组内的元素个数=数组整体大小/数组类型大小,Eg. sizeof(a)/sizeof(a[0]);
2.scanf中合法分隔符:空格,回车,TAB键
3.printf打印地址:%p,Eg. printf(“%p\n”,&a[i]);
4.“*”取值,“&”取地址
- 一维数组:*(a+i)=a[ i ];
- 二维数组:* ((a+i)+j)=a[ i ][ j ];(行地址到列地址的转换必须加一个 操作,这里的(a+i)的“ ”就是这个用处)
- 多维数组:以此类推
5.数组名是常量,不能被赋值改变!
6.在数组初始化中,如果给部分位置初始化赋值,其它位置自动置为0
7.在字符型数组中,printf不能打印带有空格的字符串
8.与字符数组有关的函数
- strlen:计算字符串个数,但不包括“\0”(用sizeof来计算的话是包括“\0”的)
- strcpy:复制字符串 (目的串,源串)
- strcat:连接两个字符串(会自动补上“\0”)
- strcmp:比较两个字符串
9.结构体:
- struct 结构体名{
- 数据类型 成员1;
- 数据类型 成员2;
- ……
- };
- Eg.
- struct A{
- int i;
- float f;
- char ch;
- };
- 共占用12字节,其中char类型自动补齐为4字节,但是实际上只用了1字节,另外3字节闲置
10.共同体
- union 共同体名{
- 数据类型 成员1;
- 数据类型 成员2;
- ……
- };
- Eg.
- union A{
- int i;
- float f;
- char ch;
- };
- 共占用4字节,由最大占空间的那个数据类型决定,上面三个变量中同一时刻只能有一者存在
11.共用体不常单独使用,经常和结构体嵌套使用
- Eg.位相加
- union {
- struct {
- unsigned short high;
- unsigned short low;
- } x;
- unsigned int y;
- struct {
- } num;
结构体的引用:
- 变量名.成员名
- 指针名->成员名 or *(指针名).成员名