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