文件与目录管理:
sudo:给予一次超级用户权限
清屏:Ctrl+L或者输入clear
自动补全:Tab
打开终端:
1、打开一个与当前路径相同的终端:ctrl+shift+n
2、打开路径为家目录的终端:ctrl+alt+t
命令提示符:
用户名@主机名:当前路径
字符串常量系统会自动在末尾添加一个“结束性标志”通常用“\0”表示
在声明数据变量时默认为有符号数(signed)
标识常量(宏):#define
宏名一般用大写,为了和普通变量区分开,提高辨识度,防止被误认为变量对值进行修改
宏只是单纯的替换,先替换再运算
#define add(a,b) a+b
Add(2,3)*add(1,4)相当于2+3*1+4
全局变量未初始化时默认值为“0”,局部变量未初始化默认值为随机值。
static修饰局部变量:
延长生命周期至程序结束,默认值为0,只能初始化一次且只能执行一次
static修饰全局变量:限制作用域
单算移关与,异或逻条赋
单目运算符、算术运算符、左移右移、关系运算符、按位与、异或(相异则为1,相同则为0)、按或、逻辑运算符、条件运算符、赋值运算符
单目运算符
算术运算符
注意:%(取余)不能用于浮点数
关系运算符
逻辑运算符
!(非) &&(与) ||(或)中“!”优先级最高。
逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。
&&和||是双目运算符,它要求有两个运算对象(操作数),!是一目运算符,只要求有一个运算对象。
&&截断法则:有一个为假,结果就为假。前一个为假,后面就不进行运算了
||截断法则:有一个为真,结果就为真。前一个为真,后面就不进行运算了
条件运算符:
三目运算符:表达式1 ? 表达式2 :表达式3
先判断表达式1是否为真,如果为真,就将表达式2的值作为整个表达式的值,否则,将表达式3的值作为整个表达式的值
逗号运算符:
表达式1,表达式2,表达式3,。。。。。。。。表达式n-1,表达式n
从左往右,依次去计算每个表达式的值,最后,将表达式n的值作为整个表达式的值
注意:逗号运算符的优先级最低,所以使用时,加上括号
c语言常用格式化符号
字符数组遇到‘\0’终止
(%*d偶然发现,记录一下)
指针的运算
两指针相减运算, p-q运算的结果是两指针指向的地址位置之间相隔数据的个数。因此,两指针相减不是两指针的值直接相减的结果,而是按下列公式计算出的结果:
(p)-(q)
——————
类型字节长度
指针与数组
int a[2][3]
&a:a当作整个数组,整个数组的地址就是首地址
a:代表首元素的地址,a[0]的地址
&a[0]:二维数组首元素的地址(对第一个一维数组整个进行取地址)
a[0]:代表第一个一维数组中首元素的地址,a[0][0]地址
&a[0][0]:第一个一维数组的第一个元素的地址
a, &a[0], &a[0][0] 值一样,意义完全不一样
数据类型:
a:int(*)[3]: 指向一维数组的指针
a[0]: int *: 指向一个整型变量
&a[0]:int (*)[3]
a[0][0]:int 类型
&a[0][0]:int *
指针函数局部变量分配 在堆栈中,当函数执行完后,局部变量自动释放,在主调函数中不能访问。
解决方法:用static 修饰局部变量使其变为静态变量。延长生命周期
字符串常量和静态变量类似,都是程序结束时,才释放内存。
因此指针函数可以返回一个字符串常量的地址。
总结:
指针函数不可以返回局部变量的地址,可以返回的地址有3中情况:
1.静态变量的地址
2.字符串常量的地址
3.堆上的地址(malloc )
来到华清远见已经有两周多了,差不多也适应了这边的环境,每天早八晚九的学习,让我梦回高中 ,但是每天过的也很充实,白天听老师讲课,晚上复习白天的内容和预习第二天要学习的知识点。任课老师教学也很认真仔细,能够及时的解决同学们提出的问题,班主任老师也很负责,时不时督促我们认真学习,学习的时候不要玩手机,打游戏。