已经一个星期没有更新了,最近利用睡前的一点时间写博客,要到期末周了可能要几个星期不更了,之后再看看有没有时间来更新吧,又是学到c语言的一周呀,加油!
‘\0’ 0 ‘0’的区别
‘\0’是一个转义字符等价于0(ASCII值为0)
0为数字0
‘0’字符0(ASCII值为48)
求两个数的较大值
(可用if函数或自定义函数)这里讲讲自定义函数
自定义函数:在主函数前定义一个函数,因为要将a,b传过去,所以在MAX后面的括号中用int x,和int y 接收,在后面的大括号中定义函数主体 用max接受MAX的返回值,即当用MAX函数算出较大值之后会将数据放到max中,注意在定义函数这里的int 后面不用加分号,return后面记得加分号
整型变量占内存四个字节,sizeof (a)可以,sizeof a 这样写法可以 sizeof int这样的写法不行,若打印数组大小,数组里面几个元素,数组大小为元素个数乘以四,
例如int arr[]={1,2},打印数组大小为8,也可以算出元素个数,除以sizeof[0]即可
操作符
~意思为按位取反,位为二进制位,比如二进制数列1010,对他进行按位取反,即0变为1,1变为0,则为0101,
对0进行按位取反,打印出的答案为-1;这里就涉及到源码,反码,补码的知识了,负数在内存中存储的时候存储的是二进制补码,将0存在整形a 中,因为a是四个字节32个比特位所以对它进行二进制取反则是32个1,b是一个有符号的整形,最高的一位即第一位数字,表示的是符号位,若为0则为正数,1则为负数而打印出的是这个数的源码,怎么求出这个源码呢
若为正数 源码反码补码相同
若为负数
源码变为反码:符号位不变,其他位加1
反码变为补码:反码加1
原来是补码11111111111111111111111111111111
先变为反码11111111111111111111111111111110
再变为源码10000000000000000000000000000001(第一位可以读作负,所以结果是-1)
++分为后置++和前置++,后置++先使用再++,前置++先++再使用
例 若int b=a++先把a的值附给b,即b的值为a的值然后a的值再++
()强制类型转换:让某个类型转化为另一种类型
关系操作符:> >= (大于等于) < <=(小于等于) == !=(不等于)
逻辑操作符&&(逻辑与,与可以理解为并且的意思,关系左右边的值的真假,有0则假,输出为0,没0则真,输出为1)||(逻辑或,有真为真,打印结果为1,左右为假才为假,打印结果为0,左右都为真则为真,打印结果为1)
条件操作符
exp1? exp2: exp3( exp 表示表达式的意思,表达式1的结果为真,表达式2要执行,表达式2的结果为假,表达式3要执行,整个表达式为表达式3的结果)为三目操作符
例 a>b?a:b,(a大于b吗,若大于b则打印a,若不大于则1打印b)
[]--下标引用操作符
()--函数调用操作符
常见关键字
Register 寄存器关键字
计算机存储数据
寄存器
高速缓存 (自下到上,内存由大到小)
内存
硬盘
在a 前面加static关键字 让a 变成静态的局部变量,所谓静态就是让函数调用后变量不回收,打印结果就是2.3.4.5.6,
static 修饰局部变量,局部变量的生命周期变长,static还可以让静态的全局变量只能在自己所在源文件内部使用,出了源文件就没办法使用;还有修饰函数的作用
extern关键字---声明外部符号,若新建一个文件定义全局变量,在另一个文件中用extern声明就可以用在另一个文件中定义的变量
#define 定义的常量和宏
宏可以简洁函数,不用像前面那样写那么多行函数
指针(以后慢慢搞懂,先不急)
首先搞清楚内存的概念,将内存调整为一个一个小的内存单元,在生活中我们用房间号来确定位置,在计算机中我们要如何给编号呢?首先如何产生地址,32位64位指的是有32/64根地址线,有正电(1)和负电(0)之分,有2的32个次方个二进制序列,即有2的32次方内存编号,每一个编号对应到内存块的话,编号就称为内存块的地址,一个空间为一个字节(8个比特位)
一种变量是用来存放地址的,这种变量就称为指针变量(p)
还是有时间要多敲敲代码呀!!!