目录

C编程面试问题(C Programming Interview Questions)

亲爱的读者,这些C Programming Interview Questions专门设计用于让您熟悉在C Programming主题面试中可能遇到的问题的本质。 根据我的经验,很好的面试官在你的面试中几乎不打算问任何特定的问题,通常问题从这个主题的一些基本概念开始,然后他们继续基于进一步的讨论和你回答的问题 -

它是一个指针变量,可以保存另一个指针变量的地址。 它取消引用两次指向指定指针变量所持有的数据。

Eg: int x = 5, *p=&x, **q=&p;

因此,'q'可以通过** q访问。

两者都从堆区域/动态内存中分配内存。 默认情况下,calloc用0填充分配的内存。

默认情况下,该函数的每个局部变量都是自动的(自动)。 在下面的函数中,变量'i'和'j'都是自动变量。

void f() {
   int i;
   auto int j;
}

注 - 全局变量不能是自动变量。

Break只能出现在循环控制和switch语句中。 休息的目的是将控制从所述块中取出。

for(expression-1;expression-2;expression-3) {
   //set of statements
}

当控制到达表达式-1时,首先执行。 然后在表达式-2之后,如果表达式-2计算为非零''语句集'并且执行表达式-3,则遵循表达式-2。

如果<>中包含头文件,则编译器仅在内置包含路径中搜索特定头文件。 如果头文件包含在“”中,则编译器首先在当前工作目录中搜索特定头文件,如果未找到则在内置包含路径中。

得到两个相同的正整数的赞美。 例如:1011(-5)

Step-1 - 赞美5:1010

Step-2 - 将1加到上面,得到1011,即-5

静态局部变量在函数调用之间保留其值,默认值为0.如果调用三次,则以下函数将打印1 2 3。

void f() { 
   static int i; 
   ++i; 
   printf(“%d “,i); 
}

如果全局变量是静态的,则其可见性仅限于相同的源代码。

指向什么都没有的指针被称为。 例如:char * p = NULL;

用于解析全局符号的范围。

Eg:  
main() {
   extern int i;
   Printf(“%d”,i);
}
int i = 20;

将格式化的输出打印到字符数组上。

数组的起始地址称为数组的基址。

如果最常使用变量,则应使用寄存器存储说明符声明它,然后编译器可能会为其存储器提供CPU寄存器以加快变量的查找。

S ++,因为它是内部的单机指令(INC)。

最初持有有效地址的指针,但稍后释放或释放保留的地址。 然后这样的指针被称为悬空指针。

它用于别名现有类型。 还用于简化类型的复杂声明。

出现在赋值运算符右侧的表达式称为rvalue。 Rvalue分配给左值,左值出现在赋值运算符的左侧。 左值应指定变量而不是常量。

在接收称为形式参数的函数定义时,在调用端发送给函数的参数称为实际参数。

是的,它可以但不能执行,因为执行需要main()函数定义。

当我们不知道指针变量将保持什么类型的内存地址时,我们就为此声明了一个void指针。

默认情况下,每个局部变量都是一个自动变量,存储在堆栈内存中。

这样称为包含另一结构的元素作为其构件的结构。

声明将类型与变量关联,而定义则为变量赋值。

包含与其元素相同的结构指针变量的结构称为自引用结构。

不,头文件只声明函数。 该定义位于库中,由链接器链接。

将程序划分为子程序(模块/功能)以实现给定任务是模块化方法。 更通用的函数定义提供了重用函数的能力,例如内置库函数。

AC程序由各种令牌组成,令牌可以是关键字,标识符,常量,字符串文字或符号。

预处理器是编译器在实际编译过程开始之前执行某些操作的指令。

可用于以所有支持的格式输入整数。

使用\(反斜杠)转义它。

是的,如果它没有出现在最后一种情况下,并且我们不希望控制在默认情况下流向以下情况,如果有的话。

如果结构/联合变量是指针变量,则要使用箭头运算符来访问结构/联合元素。

我们可以使用位字段创建不同大小的整数结构成员,而不是非标准大小。 这种结构尺寸可以用机器的整数倍来自动调整。

我们在执行程序时传递给main()函数的参数被称为命令行参数。 参数总是保存在函数的第二个参数(args中)中的字符串,该函数是字符指针数组。 第一个参数表示参数计数(在计数下面)并由操作系统自动更新。

main( int count, char *args[]) {
}
  • Call by value - 我们仅将值作为参数发送给函数。 如果我们不希望用形式参数修改实际参数但只是使用它们,我们选择这个。

  • Call by reference - 我们发送实际参数的地址而不是值。 如果我们确实希望用形式参数修改实际参数,我们选择这个。

它通过忽略大小写来比较两个字符串。

打开文件以进行读写。 如果文件不存在则创建一个文件,否则如果文件存在则会覆盖。

它不能用于常量。

它不能用于使用寄存器存储类声明的变量。

不,它是stdio.h中定义的结构。

错误,模数运算符(%)的任一个操作数都是实数,这是无效的。

只有一个运算符,是条件运算符(?:)。

goto

保存函数引用的指针称为函数指针。 一般来说,它声明如下。

T (*fun_ptr) (T1,T2…); Where T is any date type.

一旦fun_ptr引用了一个函数,就可以使用指针调用它,如下所示。

fun_ptr();
[Or]
(*fun_ptr)();

逗号运算符可用于分隔两个或多个表达式。

Eg: printf(“hi”) , printf(“Hello”);

null语句不是可执行语句,例如; (分号)。

Eg: int count = 0; 
while( ++count<=10 ) ;

上面什么也没做10次。

以static关键字为前缀的函数定义称为静态函数。 如果只应在同一源代码中调用函数,则可以使函数成为静态函数。

Opiton -lm用作> gcc -lm

使用向后斜杠(\)。

E.g. #define MESSAGE "Hi, \
Welcome to C"

椭圆(...)用于相同的。 一般函数定义如下所示

void f(int k,…)  {
}
char *s1 = "hello",*s2 = "welcome";
strcat(s1,s2);

s1指向一个字符串常量,不能更改。

realloc()

Array是通用名称下的类似数据项的集合。

枚举是具有名称的整数常量列表。 枚举器使用关键字enum定义。

fseek()

变量是名称存储。

Dennis M Ritchie。

美国国家标准协会。

的sizeof

是的,丢失了小数部分。

不,它包含无效的八进制数字。

如果表达式之间的关系为真,则返回值1,否则返回0。

如果两个相应的位都相同,则给出0 else 1。

循环执行一个循环,因为循环表达式总是计算为true,例如

while(0 == 0) {
}

属于不同范围的变量可以具有与以下代码段中相同的名称。

int var;
void f() { 
   int var; 
}
main() { 
   int var; 
}

局部变量获取垃圾值,全局变量默认值为0。

通过保持数组的基地址指针可以访问该数组。

指针上唯一允许的两个操作是

  • 比较ii)加法/减法(不包括无效指针)

它是不包含'\ 0'字符的字符数。

strcat()构成头文件string.h

箭头( - >)运算符。

stdin在指针变量中,默认情况下为标准输入设备打开。

fclose().

它用于取消定义现有的宏定义。

可以定义异构数据项的集合的结构。

__STDC__

类型转换是一种将变量/常量从一种类型转换为另一种类型的方法。

函数调用本身称为递归。

free().

程序名称。

失败时fopen()返回NULL,否则成功打开。

链接器生成可执行文件。

理想情况下,它是32个字符,也依赖于实现。

默认情况下,函数按值调用。

如果在定义后调用相同的函数声明,则它是可选的。

在预处理时。

不,只能将一个值返回给调用者。

一个指针,在它持有一个之后不允许被改变以保存另一个地址。

空虚

是的,仅仅是结构元素的顺序。

不存在这样的。 我们需要逐个元素地比较结构变量。

Strstr()

首先,它们是非标准关键字。 near指针只能访问2 ^ 15个内存空间,far指针可以访问2 ^ 32个内存空间。 这两个关键字都是特定于实现的,并且是非标准的。

不,我们不可以。

for - Loop。

这样称为无法修改的值。 这些变量用关键字const限定。

不,我们需要使用关键字'struct'和标签名称。

是的,可能程序什么都不做。

是的,任何用户定义的函数都可以调用任何函数。

Brain Kernighan

接下来是什么? (What is Next ?)

此外,您可以查看您对该主题所做的过去作业,并确保您能够自信地说出这些作业。 如果你更新鲜,那么面试官不会指望你会回答非常复杂的问题,而是你必须使你的基本概念非常强大。

↑回到顶部↑
WIKI教程 @2018