📜  C编程面试常见问题套装1

📅  最后修改于: 2021-05-25 22:25:10             🧑  作者: Mango

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

C中有哪些不同的存储类说明符?
答:自动,注册,静态,外部

变量的范围是什么?变量在C中的作用域是什么?
回答:变量的范围是程序的一部分,可以直接访问该变量。在C语言中,所有标识符都在词法(或静态)范围内。有关更多详细信息,请参见此内容。

没有分号的情况下如何打印“ Hello World”?
答:

#include 
int main(void)
{
    if (printf("Hello World")) {
    }
}

请参见印刷版“ Geeks for Geeks”,而无需使用分号作为答案。

什么时候应该在C程序中使用指针?
1.获取变量的地址
2.为了在C中实现引用传递:指针允许不同的函数共享和修改其局部变量。
3.传递大型结构,以避免完全复制该结构。
4.实现“链接”数据结构,例如链接列表和二叉树。

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

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

// 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 
  
void f()
{
    int* ptr = (int*)malloc(sizeof(int));
  
    /* Do some work */
  
    return; /* Return without freeing ptr*/
}

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

#include 
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中的全局函数不同,对静态函数的访问仅限于声明它们的文件。因此,当我们想限制对函数的访问时,我们将它们设为静态。使函数成为静态的另一个原因可能是在其他文件中重用了相同的函数名。请参阅此示例和更多详细信息。

  • C编程面试常见问题套装2
  • 在C上练习测验
  • C篇

你也许也喜欢:

C编程面试常见问题套装2
Java编程面试常见问题套装1
亚马逊最常问的面试问题
微软最常问的面试问题
埃森哲问得最多的面试问题
OOP面试常见问题
常见C++面试问题
常见的DBMS面试问题|套装1
常见的DBMS面试问题|套装2
常见操作系统面试问题套装1
数据结构面试常见问题。
常见算法面试问题
常见的计算机网络面试问题
面试问题中的十大算法

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。