1.用变量a给出下面的定义
a) 一个整型数(An integer)
b)一个指向整型数的指针A pointer to an integer)
c)一个指向指针的指针(An array of 10 integer)
d)一个有10个指针的数组(An array of 10 integer)
e)一个有10个整型数的数组,该指针是之想一个整型数的(An array of 10 pointto integer)
f)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A point to a function tha takes an integer as an argument and returns an integer)
g)一个有10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions tha take an integer argument and return an integer)
2.关键字static的作用是什么?
3.关键字const是什么含义?
4.关键字volatile有什么含义?
Quiz 1 Answer
a) int a;
b) int *a;
c)int **a;
d) int a[10];
e)int *a[10];
f)int (*a)(int);
g)int (*a[10])(int);
Quiz 2 Answer
在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数体被调用的过程中维持其值不变。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内的所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用。那就是,这个函数被限制在他声明的本地范围内使用。
Quiz 3 Answer
cont int a;
int const a;
const int *a;
int *const a;
int const *a const;
前两个的作用是一样的,a是一个常整数型。
第三个意味着a是一个指向常整型数的指针(也就是说,整型数是不可以修改的,但指针可以)
第四个意思是a是一个之想整型数的常指针(也就是说,指针之想的整型数是可以修改的,但指针不可以修改)
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数和指针都是不可以修改的)
Const的有点
关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉用乎这个参数的应用目的,如果你曾花很多时间清理其他人留下的垃圾,你就会很快学会感谢这点多余的信息(当然,懂得使用const的程序员很少会留下垃圾让别人来清理)
通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无疑的代码修改,简而言之,这样可以减少bug的出现。
Quiz 4 Answer
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1)并行设备的硬件寄存器(如:状态寄存器)
2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3)多线程应用中被几个任务共享的变量
Quiz 4 Answer