1. 数据类型对应的字节数
数据类型 字节数
(unsignd)char 1
Short int 2
Int 4
Long int 4
Long long int 8
Float 4
Double 8
Long double 12
2. 读取数据格式指定符:
Short %hd;
Int %d;
Float %f或者%e;
Double %lf或%le;
在字符串中用%s表示输出连续的字符直到遇到/0字符为止;
3. 每个字符串的末尾都添加了代码值为0的特殊字符,写作“/0”称为空字符;例如:
Char saying[20]
这条语句的声明的saying变量可以存储一个至多包含19个字符的字符串,因为必须给终止字符提供一个数组元素。当然也可以使用这个数组存储20个字符,那样就不是字符串了。因为“/0”的ASCII码是0对应的布尔值为false。
4. 指针(pointers):指针p含有一个变量number的地址,变量number是一个值为5的整数变量,存储在p中的地址是number第一个字节的地址。
5. 类型名void表示没有指定类型,所以void * 类型的指针可以包含任意类型的数据项地址。
6. int *pointers=NULL;NULL是在标准库中定义的一个常量,对于指针它表示0;
NULL是一个不指向任何内存位置的值。
声明指针时一定要初始化它们。使用未初始化的指针存储数据项是很危险的。
7. 在使用scanf()输入数值时,使用了&运算获取传给函数的地址。有了一个含有地址的指针后,只需要使用这个指针的名字作为参数就可以了。
8. 指向常量的指针:
long value=9999L;
const long *pvalue=&value;
其中,指针所指向的变量内容不能修改;
常量指针:
int count=43;
int *const pcount=&count;
其中 指针的内容(即变量的地址)不能修改;
(最好将p作为指针名的第一个字母)
9. 在声明二维数组时,在第一维[n1] 的后面放置第二维[n2],编译器就会创建一个大小为n1的数组,他的每个元素是一个大小为n2的数组。
10. 二维数组时:数组的名称并不能表示其真正的地址:(注意)
二维数组索引图
Board | 0 | 1 | 2 |
0 | board[0][0] *board[0] ** board | board[0][1] *(board[0]+1) *(* board+1) | board[0][2] *(board[0]+2) *(* board+2) |
1 | board[1][0] *(board[0]+3) *board[1] *(* board+3) | board[1][1] *(board[0]+4) *(board[1]+1) *(* board+4) | board[1][2] *(board[0]+5) *(board[1]+2) *(* board+5) |
2 | board[2][0] *(board[0]+6) *(board[1]+3) *board[2] *(* board+6) | board[2][1] *(board[0]+7) *(board[1]+4) *(board[2]+1) *(* board+7) | board[2][2] *(board[0]+8) *(board[1]+5) *(board[2]+2) *(* board+8) |
11. 在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap)。另一个内存区域,称为栈(stack),其中的空间分配给函数的参数和本地变量,在执行完该函数后,存储参数和本地变量的内存空间就会释放。堆中的内存是由程序员控制的。在分配堆上的内存时,由程序员跟踪所分配的内存何时不再需要,并释放这些空间,以便以后重用它们。
12.malloc()函数:使用malloc()函数需指定要分配的内存字节数作为参数。这个函数返回所分配内存的第一个字节的地址。使用指针:
int *pNumber=(int *)malloc(100)
因此,在编写程序过程中,最好先用if语句检查请求动态分配内存的否分配,例如:
int *pNumber=(int *)malloc(75,sizeof(int))
13. realloc():重新分配内存,例如:
pdata=(long *)realloc (pdata,sizeof(long)*count)
14. free(void *)释放内存地址;
15. 转义序列:
/n 换行;
/r 回车;
/b 退后一格;
/f 换页;
/t 水平制表符;
/v 垂直制表符;
/a 发出鸣响;
16. Sizeof:使用sizeof()运算可以确定的类型占据多少字节;
17. Break :该语句它的作用是终止switch块中代码的执行,并继续执行跟在switch后的第一行语句
Continue:进入下次循环。