1、哪一类存储类生成的变量对于包含他们的函数来说是局部变量?
答:自动存储类。
2、哪一存储类的变量在包含他们的程序运行时期内一直存在?
答:静态存储类。
3、哪一存储类的变量可以在多个文件中使用?哪一存储类变量只限于在一个文件中使用?
答:外部链接的静态存储变量、内部链接的静态存储变量。
4、代码块作用域变量具有哪种链接?
答:空链接。
5、关键字extern的用处?
答:一种是对外部文件中外部变量的引用声明;另外一种是对同文件中外部链接或内部链接静态变量的引用声明。
6、考虑如下代码段:
int *p1=(int *)malloc(100*sizeof(int));
考虑最终结果,下面语句有何不同?
int *p1=(int *)calloc(100,sizeof(int));
答:均可分配100块int类型大小的内存区,但calloc()函数可初始化0.
7、下列每个变量对哪些函数可见?程序有什么错误么?
//文件1 int daisy; //对文件1和2中任何函数都可见; int main(void) { int lily; //对本文件中main()可见 ... } int petal() { extern int daisy,lily; //此句lily定义有问题 ... } //文件2 extern int daisy; static int lily; //对文件2可见;是内链接静态变量 int rose; //对文件2可见;但是被本文件中stem屏蔽,同时也是外链接静态变量 int stem() { int rose; //对文件2中stem()函数可见 ... } void root() {... }
8、下面程序会打印出什么?P350
答:B-R-B-G-G
9、文件开始处做如下声明:
static int plink;
int value_ct(const int arr[],int value,int n);
a、这些声明表明什么意图?
b、用const int value和const int n代替int value 和int n会增强对调用程序中值的保护么?
答:1、变量plink仅限于本文件作为全局变量使用;对于函数value_ct,ar[]数组的值受保护。
2、不会。被调函数不能改变实际参数的值。而对于第一个参数,因为传递的是数组指针,被调函数可能会改变地址内的值,从而间接改变调用函数中的实际参数地址中的值。