变量/函数的声明和定义有什么区别 答案: 变量/函数的声明只是声明变量/函数存在于程序中的某个地方,但内存没有分配给它们。但变量/函数的声明起着重要作用。这就是变量/函数的类型。因此,当声明变量时,程序知道该变量的数据类型。在函数声明的情况下,程序知道该函数的参数是什么、它们的数据类型、参数的顺序和函数的返回类型。这就是宣言。说到定义,当我们定义一个变量/函数时,除了声明的作用外,它还为该变量/函数分配内存。因此,我们可以将定义视为一组超声明。(或作为定义子集的声明)。
//这是唯一的声明。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。此外,当程序中的内存被释放时,我们应该使指针为空。
什么是悬挂指针? 答案: 悬挂指针是指不指向有效内存位置的指针。当对象被删除或解除分配时,会出现悬空指针,而不修改指针的值,因此指针仍然指向解除分配的内存的内存位置。以下是一些例子。
// 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中的全局函数不同,对静态函数的访问仅限于声明它们的文件。因此,当我们想要限制对函数的访问时,我们将它们设置为静态。使函数成为静态函数的另一个原因是在其他文件中重用相同的函数名。看见 这 有关示例和更多详细信息。
- 常见的C编程面试问题|集2
- 实践 测验 关于C
- C 文章
你可能还喜欢:
常见的C编程面试问题|集2 常见Java编程面试问题|集1 亚马逊最常被问到的面试问题 微软最常被问到的面试问题 埃森哲最常被问到的面试问题 常见的OOP面试问题 常见的C++面试问题 常见DBMS面试问题|集1 常见DBMS面试问题|集2 常见操作系统面试问题|集1 常见的数据结构面试问题。 常见面试问题 常见的计算机网络面试问题 面试问题中的十大算法
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。