1、函数接口
函数的调用者和函数的实现者之间订立了一个契约,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者要对调用者尽到某些义务
2、传出函数,传入函数
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的src参数是传入参数,dest参数是传出参数.
3、参数传递
v
传值调用
v
数组
v
结构体
4、函数返回值
char * fun()
{
char str[11];
return str;
}
int main()
{
fun();
return 0;
}
5、命令行参数
int main(int argc, char *argv[]);
argc: 参数的个数
argv:存放参数的指针数组
6、位运算位操作符
v
&
v
|
^
7、位运算移位操作符
v
>> <<
无符号值执行的所有移位操作都是逻辑移位但是对于有符号值,需要确定;
8、位运算掩码
v
如果要对一个整数中的某些位进行操作,怎样表示这些位在整数中的位置呢?可以用掩码
(Mask)来表示。比如0x0000ff00表示对一个32位整数的8~15位进行操作,举例如下:
1、取出8~15位。
unsigned int a, b, mask = 0x0000ff00;
a = 0x12345678;
b = (a & mask) >> 8; /* 0x00000056 */
同样也可以达到同样的效果:
b = (a >> 8) & ~(~0U << 8);
2、将8~15位清0
unsigned int a, b, mask = 0x0000ff00;
a = 0x12345678;
b = a & ~mask; /* 0x12340078 */
3、将8~15位置1
unsigned int a, b, mask = 0x0000ff00;
a = 0x12345678;
b = a | mask; /* 0x1234ff78 */