C语言面试高频(一)
1.全局变量和局部变量的区别
全局变量:
- 在函数外部声明的变量,整个程序都可以访问。
- 声明时会被默认初始化,可以在任何函数中使用。
- 生命周期长,整个程序执行期间都存在。
- 全局变量存储在全局数据区(data)中
局部变量:
- 在函数内部或代码块内部声明的变量,只能在所属的函数或代码块中访问。
- 声明时没有默认初始化,需要手动赋值才能使用。
- 生命周期短,只在所属的函数或代码块的执行期间存在。
- 局部变量存储在栈区(stack)
2.int main(int argc, char ** argv)函数中,参数argc和argv分别代表什么意思?
在C语言中,主函数int main(int argc, char **argv)用来作为程序的入口,argc和argv是其参数。
- argc是整型参数,表示命令行参数的个数。它记录了程序在运行时附带的命令行参数的数量,至少为1,因为程序自身的名称也算一个参数。
- argv是字符指针数组,用来存储命令行参数的字符串。每个元素指向一个以null结尾的字符串,表示一个命令行参数。
- argv[0]指向程序的名称,argv[1]指向第一个参数,以此类推,argv[argc-1]指向最后一个参数。
举个例子,假设我们在命令行中执行以下命令:
./program arg1 arg2 arg3
那么argc的值为4,argv的值如下所示:
argv[0] = "./program"
argv[1] = "arg1"
argv[2] = "arg2"
argv[3] = "arg3"
argv[4] = NULL
3.static关键字
- 声明静态变量,使其生命周期延长或作用域限定在当前文件内。
- 声明静态函数,使其作用域限定在当前文件内。
- 声明静态成员变量,使其属于类本身而不是对象,多个对象共享同一份内存。
- 使用静态限定符,控制变量的初始化和生命周期。
举例:
- 在函数内部使用 static:
#include <stdio.h>
void increment() {
static int count = 0;
count++;
printf("调用次数:%d\n", count);
}
int main() {
for (int i = 0; i < 5; i++) {
increment();
}
return 0;