原创 编程重度爱好者 c语言交流 2020-10-13

收录于话题

#编程语言28

#工作8

#学习7

1.变量/函数的声明和定义之间有什么区别

答案:变量/函数的声明仅声明变量/函数存在于程序中的某个位置,但未为其分配内存。但是变量/函数的声明起着重要的作用。这就是变量/函数的类型。因此,在声明变量时,程序会知道该变量的数据类型。在声明函数的情况下,程序会知道该函数的参数是什么,它们的数据类型,参数的顺序以及函数的返回类型。这就是声明。关于定义,当我们定义变量/函数时,除了声明的作用外,它还为该变量/函数分配内存。因此,我们可以将定义视为声明的超集。(或声明作为定义的子集)。

2.C中有哪些不同的存储类说明符?

答案:auto, register, static, extern

3.变量的范围是什么?变量在C中的作用域怎样?

答案:变量的范围是程序的一部分,可以直接访问该变量。在C语言中,所有标识符都在词法(或静态)范围内。

4.没有分号,您将如何打印“ Hello World”?

#include <stdio.h> 
int main(void)
{
if (printf("Hello World")) {
}
}

5.什么时候应该在C程序中使用指针?
答案:

1.获取变量的地址
2.为了在C中实现引用传递:指针允许不同的函数共享和修改其局部变量。
3.通过大型结构,以便避免完整复制结构。
4.实现“链接”数据结构,例如链接列表和二进制树。

6.什么是NULL指针?
答案:NULL用于指示指针未指向有效位置。理想情况下,如果在声明时不知道指针的值,则应将指针初始化为NULL。另外,当由它指向的内存在程序中间被释放时,我们应该使指针为NULL。

7.什么是悬空指针?

答案:悬空指针是没有指向有效内存位置的指针。当删除或释放对象时,如果不修改指针的值,就会出现悬空指针,因此指针仍然指向释放后的内存的存储位置。以下是示例。

// 示例1
int* ptr = (int*)malloc(sizeof(int));
..........................free(ptr);

// ptr 是一个悬空指针,以下操作无效
*ptr = 10;
// 示例2
int* ptr = NULL
{
int x = 10;
ptr = &x;
}
//x超出范围,并且分配给x的内存现在可用
//所以ptr现在是悬空指针

8.什么是内存泄漏?为何应避免使用它

答案:程序员在堆中创建内存而忘记删除它时,就会发生内存泄漏。对于诸如守护程序和服务器之类的程序而言,内存泄漏是特别严重的问题,根据定义它们永远不会终止。

9.什么是局部静态变量?它们有什么用?

答案:局部静态变量是一个变量,其生存期并不以声明它的函数调用结尾。它延长了整个程序的寿命。所有对该函数的调用都共享局部静态变量的相同副本。静态变量可用于计算调用函数的次数。另外,静态变量的默认值为0。例如,以下程序输出“ 0 1”

#include <stdio.h> 
void fun()
{
// 静态变量的默认值为0
static int x;
printf("%d ", x);
x = x + 1;
}

int main()
{
fun();
fun();
return 0;
}
// 输出: 0 1

10.什么是静态函数?它们有什么用?

答案:在C语言中,默认情况下函数是全局的。函数名称前的“ static”关键字使其变为静态。与C中的全局函数不同,对静态函数的访问仅限于声明它们的文件。因此,当我们想限制对函数的访问时,我们将它们设为静态。使函数成为静态的另一个原因可能是在其他文件中重用了相同的函数名。

C语言编程常见十大面试问题(内附答案)_C语言