C语言复习二

const的使用
首先const原来是c++里面的,用来定义常量,后来被引用到C语言里面来,用来定义只读变量 例如(int const a),表示a这个值只可读不可以进行其他操作。但是a++可以,改变这个指针的地址可以但不可以改变指针所指的内容。例如(int const a) const a 是指针变量,指针不可以修改,内容可改但指针地址不可改。例如(int const * const a)表示内容和指针都不可以改。
extern和static:当文件里定义了static ,被static定义的只能在这个文件里使用,如果没有static,可以在另外一个文件里声明extern进行引用。在同一个源程序里不可以在多个文件里设置相同的文件名。
函数:函数传值是通过两种方式,一是通过返回值,二十通过参数返回。
goto:在C语言里再多重嵌套循环里,从最里循环跳到最外循环,这是唯一使用的地方。goto其实也可以作为循环,但是这个循环条件,一般不用。
struct()结构体:结构体是可以嵌套定义的,也可以定义在函数里。注意如下图这个就是结构体struct不能丢,后面跟的是结构体名,其后也可以再定义结构体变量。
在这里插入图片描述
这里在最后一行定义的就是结构体变量。结构体变量可定义多个。结构体定义后所占的内存是结构体内数据类型占字节数的总和,这里还要注意的是里面还有字对齐和半字对齐。
字对齐:在结构体中定义了不同的数据类型。这里只要有整型,每个数据类型所占的内存必须是四的倍数,且只看整型。
在这里插入图片描述
半字对齐只看short
在这里插入图片描述

在这里插入图片描述
变量用".",指针用:"->",下图(*p).score 中()不能去,这里有优先级(注意常复习优先级)结构体的指针只能指向自己,不可以指向别人。
在这里插入图片描述
struct初始化有两种方式:按位置初始化和指名初始化。
在这里插入图片描述
在这里插入图片描述
数组名不能做为左值,字符数组赋值只能复制例如:
strcpy(stu1.name,”liming“);一维数组大小有两种方法。1.写在[ ]中。2.在定义是直接复制,可以在[ ]中可以省略指定大小。二位数组及其以上只能省略第一个,其他不可以省略。
在这里插入图片描述

**union(共用体)**其书写结构与结构体格式差不多
在这里插入图片描述
结构体与共用体的区别在于,结构体中的各个成员会占用不同的内存,而共用体各个成员共用同一块内存,比如说:共用体成员有int a; char b; 他们共用的内存地址比如说在内存块编号为2000的位置,a和b在内存的首地址是一样的,都从2000位置开始。union也有字对齐。
字节序分为大端字节序和小端字节序,
在这里插入图片描述
在这里插入图片描述
1 #include <stdio.h>
2
3 union endian
4 {
5 int a;
6 char b;
7 };
8
9
10 int main()
11 {
12 union endian e;
13
14 e.a =1;
15
16 if(e.a==1)
17 {
18 printf(“litter\n”);
19 }
20 else
21 {
22 printf(“big\n”);
23 }
24
25 return 0;
26 }

验证大小端字节,在网络编程里用的比较多。
字符串没有字节序,因为字符串里面元素都是统一都类型,不存在以上情况。

enum (枚举)
在这里插入图片描述
在这里插入图片描述
**switch()**括号中是整型表达式,字符也可以,case+的也必须是整型常量。

#define(宏定义)
可以避免产生幻术。预处理=>宏展开也是宏替换。带参数的函数,在替换时需要替换两次。使用频率高的函数用宏定义比较好,没有流程转移,执行效率增大。
在这里插入图片描述
用于分段调试程序。

for(;😉,while(),do…while()区别
for循环有条件判断,while循环可以在未知循环次数的条件下,进行循环,do…while是需要先执行循环体再执行条件判断,如果说第一次条件判断可以成功,就和while没有差别,但是如果do…while执行第一次就不成功,那么while一次也不会执行,就产生了区别。对于字符串的处理适合使用while循环。

两个值互换的方法有三种:
在这里插入图片描述
多重循环将循环次数多的放在里面,循环次数少的放在外层循环,减少流程转移提高资源利用率。且逻辑判断语句例如for(int i = 0; ;)中i放在外面定义,不用循环一次定义一次。减少资源浪费。

位运算:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复合运算符:
+= 加法赋值 -= 减法赋值
*= 乘法赋值 /= 除法赋值
%= 模运算赋值 <<= 左移赋值 >>= 右移赋值
&= 位逻辑与赋值 |= 位逻辑或赋值 ^= 位逻辑异或赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值