这些是我在华清远见学习的时候记的一些小笔记,就是上课时听到哪个地方不是很懂的,就记在便签里,然后整理到这上面,也希望这些零散的知识能对别人起到一些补充作用。
培训的还是有点用,老师讲C语言部分的时候比学校里的老师要深入点,补充学习的内容还是很多。
C语言:
1.指针相减,表示2个指针之间间隔的元素。
2.宏定义不改变优先级
上图中R代表4+4,宏定义展开就变成第三排红字,没有括号。
宏定义只做替换,不改变优先级,所以宏定义R时,需要加(),才能保证下面运用的时候4+4先运算。
3.多文件编程
4.自增自减
14行中p先和++结合,但是printf执行最后才会移动p,所以14行输出才会是4,如果p先和*结合,那14行的输出就是4+1=5,15行输出就是4,与实际输出结果相悖。
注意!!!
针对上图中,如果有str++这种操作,是错误的,记住++是一个赋值操作,即str = str +1,但是因为str是数组首地址,数组首地址如果变了,你就找不到这个数组了,所以系统默认这个原装的指针不允许被改变,其它指向它的指针可以。
5.printf()
上图printf里没有回车(\n),进入死循环,程序结束不了,hello就不会被拿出缓冲区,即显示不出来,除非程序结束,才会显示。
还有如果缓冲区装不下了,也会打印出来
改缓冲区模式,上面是行缓冲,下图为无缓冲模式,有什么打什么,不用换行符。
6.scanf()
前3个10后面依次输入的是回车,2个空格,1个tab,第四次20后面输入了好几个空格和tab,
说明了空格,tab,回车都能捕获一个结束 (也做分隔符),而只有回车,能让输入结束。
注意一:
没有相应输入,直接回车,不会结束
注意二:
scanf里不能有(\n),如果有,需要在输入一个其他值,再回车才会结束,不然只按回车结束不了
7.指针与数组之间存在的等价关系。
8. 交换变量 的3种方法
(1)
a ^= b; b ^= a; a ^= b;
上述方法在整型交换,遇到相同的数不能用
(2)
a = a + b; b = a - b; a = a - b;
(3)
int t; //引入第三个变量,不是必须int,a,b是啥类型,t就是啥类型 t = a; a = b; b = t;
下面2个是万能的。
9.寄存器没有地址
int *p;
register int a;
p不能指向a,因为寄存器里没有地址
10.%*c可以处理垃圾字符(输入之间的空格,回车,tab)
上图右边第一个输入为scanf("%c%c%c",a,,b,c);结果就有垃圾字符
原样输入也行,即scanf里有空格,必须手动把空格输上。
shell命令:
cd 后不能/开头,/放开头代表根目录,即上面表示在根目录下没有2110文件。
根目录里有lib目录文件,所以上述命令直接进入lib了。