目录
一.getchar()
字符的输入输出务必注意有“\0”尤其在连续输出的时候,一定要用getchar()函数将缓冲区的\0去掉
二.高内聚低耦合,
函数的功能尽量模块独立.不要跟其他的交互
三.reverse_string
1.方法1,循环指针法
用指针接收,这里要跟整型数组区分,strlen只可以用于字符串的大小计算,并且要注意,到\0结束.
2.方法2,循环数组法
直接在数组进行操作,因为数组名就是地址.
3.递归法
第一个元素始终放在tmp里,递归回来的时候一步一步放在后面.
先把最后一个数放在第一个里
然后进入判断,只要地址往后一个元素,还剩两个元素,就进入递归
直到无法递归.
递归回来,比如abcdef
第一次 fbcde tmp=a fedcba
第二次f cde tmp=b; fedcb
第三次fe d tmp=c;这里结束递归,fedc
void reverse_string(char *arr)//递归方法 { int len = My_strlen(arr); char tmp = *arr; *arr = *(arr + len - 1); if (My_strlen(arr + 1) >= 2)//只要还有两个元素就交换 { reverse_string(*(arr + 1)); } *(arr + len - 1) = tmp; }
四.逗号表达式的结果是最后一个
sizeof也计算道\0.字符的字节是1字节
五.sizeof与strlen的区别
sizeof是计算数组大小.字符正好是1字节,并且包含\0
而strlen计算的是字符串长度,\0结束
字符串长度Y不知道,是随机数
*(arr)表示下标为0的地址指针
len如果是数组长度
*(arr+len-1)为下标是最后一个的地址指针
六.取模符号和除号
必须保证除号两边有一个是小数,才会出现浮点数
取模一定是小于她
必须a%b必须是整数
结果肯定是0到b-1
七. 移位操作符
<<左移操作符
>> 右移操作符
整型是四个字节也就是32bit
正整数原码,反码,补码相同.
1 左移操作符
移位规则:
左边抛弃、右边补0
注:移位操作符的操作数只能是整数。
操作的是补码.实际上显现的是源码
正整数
负整数
负整数需要先变成反码再变成补码再进行操作,因为我们看到的是原码,而计算机操作是补码
因为整数在内存中存储的是补码的二进制位
2.右移操作符
1.算术右移
右边丢弃,左边补原符号位
2.逻辑右移
右边丢弃.左边补0
取决编译器
八.位操作符
& //按位与//二进制位两个必须都为1才为1,否则为0
| //按位或//二进制位只要有1就为1只有同时为0才为0
^ //按位异或对应的二进制位:相同位0,相异为1
注:他们的操作数必须是整数。
九.扫雷游戏的优化
为了使有那种炸开的效果.也就是四周没有炸弹会空白.但是我觉得这是一个循环,假如四周没有炸弹,那还要继续对四周的炸弹进行判断.
但是四周的数量不好判断,就取了个界限4
但是后期测试的时候,会发现炸开会把之前的数据给覆盖掉.所以需要改进,判断是否为*/不是的话就不要填入空格