c语言基础复习二之零碎预科
一:字符串和字符的区别
字符常量'x':是基本类型,由一个字符组成。
字符串常量'x':是派生类型,由两个字符组成。(末尾有一个\0)
二:strlen()与sizeof()函数
strlen()函数:以字符为单位给出字符串的长度,计算长度的方法是遇到字符串结束符’\0‘为止。
sizeof()函数:以该字符串的内存空间大小。
例子:(1) char ch = "hello" (2)char ch[20] = "hello"
sizeof(ch) = 6 sizeof(ch) = 20
strlen(ch) = 5 strlen(ch) = 5
三:"%20s",右对齐;"%-20s",左对齐。值不足20时,用空格填充;多于20个,全部输出。 //代码欠缺
四: 位逻辑与、或、异或【&、|、^】
1010 & 1110 == 1010 1010 | 1110 == 1110 1010 ^ 1110 == 0101
注:a^b ---> 相同为零,不同为一
五:const型指针,令 int a = 100,b = 200。
(1)、*前加const,如:const int *p 或 int const *p。
p为指向整型变量指针,且该变量相对于p而言只读。
解释:当 int const *p = &a ; 不能通过p改变值,举例 不允许*p = 250;即*p值不变,但a值可以变。
注:*p = &a 等价于 int *p,p = &a;*P = 100。
(2)、*后加const,如:int *const p;
p为指向整型变量指针,且该指针p本身只读。
解释:当 int *const p = &a,不允许 p = &b,即p指向位置固定。
(3)、*前后都加const,如:const int *const p 或 const int const *p。
p为指向整型变量的只读指针,且该变量相对于p而言也是只读。
解释:当 int const * const p = &;既不允许 *p = 250,也不允许p = &b。
六: int main(int argc, char **argv)
argc:表示命令行参数的个数;
argv:表示一个字符指针数组,用来存放命令行参数。
七:C为变量提供了5种不同的存储模型,或称为存储类
自动存储: auto 局部变量
静态存储: static 局部变量、全局变量
寄存器存储: register 使cpu调用数据更快
外部存储: extern 用于声明(当某个类时在别的文件中定义的)
关键字: typedef
存储类描述的角度: (1) 作用域:是否在该文件在(函数)起使用。
(2) 链接类型:能不能在别的文件中被使用。
(3) 存储期:生存时间。
作用域:描述了程序中合法访问一个标示符的区域。e.g 代码块作用域(别的代码块无法使用);文件作用域(整个文件起作用,是全局变量)。
存储期:静态存储期、自动存储期、动态存储期(手动开辟malloc,手动释放free)。

八:内存管理 malloc和free函数
(1)void *malloc(size_t num);
void free(void *p);
(2)p1 = (int *)malloc(sizeof(int));申请整型空间。
p2 = (int *)malloc(sizeof (int)* 10); 申请一个数组空间,返回数组首地址。
(3)malloc申请的是一块连续的内存,有时可能会比所申请的空间大。有时会申请不到内存,返回NULL
mallco返回值的类型是void*, 所以在调用malloc时要显示的进行类型转换,将 void* 转换成所需要的指针类型。
九:结构体大小对齐
(1)一个结构体大小,必须能够被结构体内最大的M值整出。
(2)若某一个类型的M值大于机器长度(32位下为 4 byte),则对齐的M值为机器长度。
浙公网安备 33010602011771号