程序员宝典第一天

来源:互联网 发布:带虚化的拍照软件 编辑:程序博客网 时间:2024/05/01 14:04

1atexit的 用法

#include <stdlib.h>

       int atexit(void (*function)(void));

void fd()

{

printf(“I am in A\n”);

}

void fd1()

{

printf(“I am in B\n”);

}

 

int main()

{

atexit(fd);

atexit(fd1);

return 0;

}

系统会在函数执行完main函数之后 执行这两个函数,*并且执行的顺序 与注册的顺序是相反的 ,所以代码输出结果如下:

I am in B

I am in A

2、宏定义的使用

 

1、使用宏定义定义一个公式。例如:

#define SQR(x) (x*x)

需要注意的是,如果调用函数int a=3 SQR(a+2),

这里的结果不是 5*5 而是3+2*3+2;是11;所以写函数的时候 要写成

#define SQR(x) ((x)*(x));系统不会自动把公式圈起来的。

 

2、宏参数的链接

#define STR(s) #s

#define CONS(a,b)  (int)(a##e##b)

这里定义的两个宏。意思分别是

1、s是一个字符串 #的意思是 这个S是一个字符串。

2、## a,b是链接两个参数的 例如调用CONS (3,5)那么这个函数就是3e5那么就300000.

 

3、如何得到一个字的高低8字节:代码如下

#define SQR(x) ((bytes)((word)(x)&&255))

#define SQR(x) ((bytes)((word)(x)>>8));

3static

1static有什么作用

1、在函数体内,修饰一个静态变量,在调用这个变量时保持其值不变。

2、在模块内,(但在函数体外),用static函数修饰的变量,可以被模块内所有函数访问,但不能被模块外其他函数访问,它是一个本地的局部变量。

3、在模块内,一个被声明为静态的函数只可被这一个模块内的函数调用。那就是这个函数被限制在声明它的模块内使用

 

2、static 全局变量与普通的全局变量有什么区别

 

  全局变量的说明之前加上static就是静态全局变量,全局变量和静态全 局变量也是静态存储方式,但是用了static修饰以后,如果有几个源文 件组成,那么就只能在 定义的源文件组成,但是如果不用static修饰那 么 就能够被所有源文件使用。用static修饰,就会避免在其他源文件中 引起错误。

原创粉丝点击