吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → 常见的 C 编程面试问题一

常见的 C 编程面试问题一

来源:网络 | 更新时间:2022-01-26 20:41:44
变量/函数的声明和定义有什么区别 变量/函数的声明只是声明变量/函数存在于程序中的某个位置,但没有为它们分配内存。但是变量/函数的声明起着重要作用。这就是变量/函数的类型。因此,当声明一个变量时,程序就知道该变量的数据类型。在函数声明的情况下,程序知道该函数的参数是什么,它们的数据类型,参数的顺序和函数的返回类型。这就是声明的全部内容。进入定义,当我们定义一个变量/函数时,除了声明的作用,它还为该变量/函数分配内存。因此,我们可以将定义视为一个超集的声明。(或作为定义子集的声明)。 // 这只是声明。此语句未为 y 分配内存 extern int y; // 这既是声明也是定义,x的内存是由这个语句分配的。 int x; C中有哪些不同的存储类说明符? 答:自动、注册、静态、外部 什么是变量的范围?变量在C中的作用域如何? 答:变量的范围是程序中可以直接访问变量的部分。在 C 中,所有标识符都是词法(或静态)范围的。有关更多详细信息,请参阅内容。 你将如何打印没有分号的“Hello World”? 答:
#include <stdio.h>
int main(void)
{
if (printf("Hello World")) {
}
}
我们什么时候应该在 C 程序中使用指针? 1.获取变量的地址 2.实现 C 中的引用传递:指针允许不同的函数共享和修改它们的局部变量。 3.传递大型结构,以避免结构的完整副本。 4.实现“链接”数据结构,如链表和二叉树。 什么是空指针? 答: NULL 用于指示指针未指向有效位置。理想情况下,如果我们在声明时不知道它们的值,我们应该将指针初始化为 NULL。此外,当指针指向的内存在程序中间被释放时,我们应该将指针设为 NULL。 什么是悬空指针? 答: Dangling Pointer 是一个不指向有效内存位置的指针。当对象被删除或释放时,会出现悬空指针,而无需修改指针的值,因此指针仍然指向释放内存的内存位置。以下是示例。
// EXAMPLE 1
int* ptr = (int*)malloc(sizeof(int));
..........................free(ptr);

// ptr is a dangling pointer now and operations like following are invalid
*ptr = 10; // or printf("%d", *ptr);
// EXAMPLE 2
int* ptr = NULL
{
int x = 10;
ptr = &x;
}
// x goes out of scope and memory allocated to x is free now.
// So ptr is a dangling pointer now.
什么是内存泄漏?为什么要避免 答:当程序员在堆中创建内存并忘记删除它时,就会发生内存泄漏。对于像守护进程和服务器这样的程序来说,内存泄漏是特别严重的问题,这些程序根据定义永远不会终止。
/* Function with memory leak */
#include <stdlib.h>

void f()
{
int* ptr = (int*)malloc(sizeof(int));

/* Do some work */

return; /* Return without freeing ptr*/
}
什么是局部静态变量?它们的用途是什么? 答:局部静态变量是一个变量,其生命周期不会以声明它的函数调用结束。它延长了整个程序的生命周期。对该函数的所有调用共享同一份局部静态变量。静态变量可用于计算函数被调用的次数。此外,静态变量的默认值为 0。例如,以下程序打印“0 1”
#include <stdio.h>
void fun()
{
// static variables get the default value as 0.
static int x;
printf("%d ", x);
x = x + 1;
}

int main()
{
fun();
fun();
return 0;
}
// Output: 0 1
什么是静态函数?它们的用途是什么? 答:在 C 中,函数默认是全局的。函数名前的“static”关键字使其成为静态的。与 C 中的全局函数不同,对静态函数的访问仅限于声明它们的文件。因此,当我们想要限制对函数的访问时,我们将它们设为静态。使函数成为静态的另一个原因可能是在其他文件中重用相同的函数名称。

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com