一、. 关键字static的作用是什么?
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,
但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这
个函数被限制在声明它的模块的本地范围内使用。
二、关键字const是什么含意?
const int a; // a是一个常整型数
int const a; //a是一个常整型数
const int *a; //a是一个指针,指向常整型数的指针,整型数是不可以修改的,指针可以修改
int * const a; //a是一个常指针,指向整形数,指针不可以修改,但是整形数可以修改。
int const * a const; //a是一个指向常整形数的常指针,指针和整形数都不可以修改。
三、volatile
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
四、++a,a++
a++ 和 ++a的相同点都是给a+1,不同点是a++是先参加程序的运行再+1,而++a则是先+1再参加程序的运行。
五、
某工程中要设置一个绝对地址为0x67a9整形变量值为0xaa66,编译器是纯ANSI编译器
这个问题测试你是否知道为了访问一绝对地址把一个整型数强制转换为一指针是合法的。
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;