一些细节整理
1.有关位运算符(只用于二进制位)
&(按位与):均为1的二进制位按位于之后为1,反之均为0
|(按位或):均为0的二进制位按或于之后为0,反之均为1
^(按位异或):当两个位进行异或之时,如果两个位不同,结果为1,如果两个位相同,结果为0
右移位操作符<< :在右移操作符中,一种是逻辑移位左边移入的位用0填充,一种是算术移位,左边移入的位由原先该值的符号位决定。(0表示正数,1表示负数)
左移位操作符>>:在左移操作符中,最左边的几位2被丢弃,右边多出的几位用0填充。
~按位取反
2.逻辑操作符
&&(逻辑与):多个表达式均为真时,则表达式结果为真,反之
||(逻辑或):多个表达式均为假时,则表达式结果为真,反之
3.写在sizeof内部的表达式不参与运算。sizeof内部单独放一个数组,则表示整个数组,而当作形参时,则表示数组首元素的地址,而地址不论在什么情况下,均表示4个字节。
4.函数调用操作符
int sum=Add(a,b);
有三个操作数,即函数名,a,b
5.结构指针->,结构体变量直接引用用 . 操作符
6.隐式类型转换:即整型提升 正数的原反补相同
7 栈空间:临时变量,局部变量,形式参数
堆空间:动态开辟的内存
静态区:静态变量,全局变量
8.break语句的使用
while语句中,表示永久终止循环
for语句中,表示立即退出循环
do…….while语句中,表示永久的终止循环
switch……case语句中,表示调到语句列表的末尾
9.continue语句的使用
while语句中,表示永久终止当前循环
for语句中,表示跳出本次循环,回到调整部分
10.volatile:表示保证内存的可见性,即变量访问时,每次均去内存去取
11.注释的形式
#if 0
代码语句
#endif
12.数据在内存中的存储
13 .lib文件表示静态库文件,将代码的实现隐藏起来,表示第三方库,将头文件与源文件分开放置
将静态库文件引入到工程中:即#pragma comment(“lib,静态库文件的名字”)
函数
1.函数分类:IO函数、字符串操作函数、字符操作函数、内存操作函数、时间\日期函数、数学函数、其他库函数
2.实参:常量,变量,表达式,函数等但是一定要能计算出确定的值
形参:当函数调用完成后,则形参被销毁,形参只能是变量
3.在函数调用时,允许嵌套调用
4.函数的链式访问:函数的返回值在另一个函数中被调用
5.函数先声明后使用,声明 int Add(int,int);
6.static:将函数的外部链接属性变为内部链接属性,将变量的生命周期变长,将变量的外部链接属性变为内部链接属性。
注:局部变量是无属性的
数组
1.char*p=“abcdef”
将a的地址放入到p中,但可以通过a找到 后面的abcdef 常量字符串,不可被该改,p表示一个指针变量,在32位平台下表示4个字节
char arr[]=“abcdef”
即直接将abcdef放在arr的内存中
2.数组在内存中是连续存放的
3.二维数组首元素的地址,相当于数组第一行的地址
4.sizeof内单独放一个数组名,则表示整个数组,&arr也表示整个数组的地址
5.整形的地址解引用访问一个整型的大小,字符地址解引用访问一个字符的大小,数组的地址解引用访问整个数组
6.数组地址+1表示跳过整个数组,但还是表示4个字节
7.在二维数组中,sizeof(arr[0]) arr[0]表示一个数组名,即表示一个一维数组,单独放在sizeof内部,即表示整个数组
8.二维数组降级处理,则表示一维数组
9.数组名作为函数参数(形参),表示数组首元素的地址,在32位的平台下,表示4个字节
10.在外部函数需要知道数组的大小时,则在传参的时候,需要将数组大小传过去。
11.传参时 int arr[]=int*arr