29-复习题
12.8 复习题
复习题的参考答案在附录A中。
1.哪些类别的变量可以成为它所在函数的局部变量?
2.哪些类别的变量在它所在程序的运行期一直存在?
3.哪些类别的变量可以被多个文件使用?哪些类别的变量仅限于在一个文件中使用?
4.块作用域变量具有什么链接属性?
5. extern 关键字有什么用途?
6.考虑下面两行代码,就输出的结果而言有何异同:
int * p1 = (int *)malloc(100 * sizeof(int));
int * p1 = (int *)calloc(100, sizeof(int));
7.下面的变量对哪些函数可见?程序是否有误?
/* 文件 1 */
int daisy;
int main(void)
{
int lily;
...;
}
int petal()
{
extern int daisy, lily;
...;
}
/* 文件 2 */
extern int daisy;
static int lily;
int rose;
int stem()
{
int rose;
...;
}
void root()
{
...;
}
8.下面程序会打印什么?
#include <stdio.h>
char color = 'B';
void first(void);
void second(void);
int main(void)
{
extern char color;
printf("color in main() is %c\n", color);
first();
printf("color in main() is %c\n", color);
second();
printf("color in main() is %c\n", color);
return 0;
}
void first(void)
{
char color;
color = 'R';
printf("color in first() is %c\n", color);
}
void second(void)
{
color = 'G';
printf("color in second() is %c\n", color);
}
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 ,是否对主调程序的值加强保护。