原创 无言 C语言编程学习基地 2020-11-30

话不多说,直接上面试题!如果有刚刚学习编程的小伙伴也可以看一下,都是当时大学应该学懂的,但是因为我以前没有好好听课,有些也没有注意到,现在也是提醒大家吧~

C/C++编程笔记: C语言编程面试常见问题,全是经典题!_c++

C语言的主要特征是什么?

C是一种过程语言。C语言的主要功能包括对内存的低级访问,简单的关键字集和简洁的样式。这些功能使其适用于诸如操作系统或编译器开发之类的系统编程。 


i ++和++ i有什么区别?

1)表达式“ i ++”返回旧值,然后递增i。表达式++ i递增该值并返回新值。 

2)后缀++的优先级高于前缀++。 

3)后缀++的关联性从左到右,前缀++的关联性从右到左。 

4)在C ++中,++ i可用作左值,但i ++不能用作左值。在C中,它们都不能用作l值。 


什么是l值?

l值或位置值是指可以在赋值运算符左侧使用的表达式。例如,在表达式“ a = 3”中,a是l值,而3是r值。 

l值有两种类型: 

“不可修改的l值”表示无法修改的l值。const变量是“不可修改的l值”。 

“可修改的l值”表示可以修改的l值。


数组和指针有什么区别?

指针用于存储动态分配的数组的地址,以及用于作为参数传递给函数的数组。在其他情况下,数组和指针是两个不同的东西,尽管数组和指针是不同的东西,但是数组的以下属性使它们看起来相似。

如何编写自己的sizeof运算符?

C/C++编程笔记: C语言编程面试常见问题,全是经典题!_c++_02

类型就像是宏的局部变量。&type给出程序中声明的变量(double x)的地址,将其递增1表示可以存储下一个类型x变量的地址(此处addr_of(x)+ 8,因为double的大小为8B )。

差异得出的结果是,可以在该内存量中存储多少x类型的变量,对于x类型,显然这将是1(将其递增1并取不同就是我们所做的)。将其类型转换为char *并求出差值将告诉我们在给定的内存空间中可以存储多少个char类型的变量(差值)。由于每个字符仅需要1B的内存,因此(内存量)/ 1将给出传递给宏的变量类型的两个连续的内存位置之间的字节数,从而得出该变量的内存量。x要求。

但是您将无法将任何文字传递给此宏并知道它们的大小。

您也可以使用函数而不是宏来实现,但是函数实现无法在C中完成,因为C不支持函数重载,并且sizeof()应该接收所有数据类型的参数。

注意,以上实现假定字符的大小为一个字节。


如何在不使用循环的情况下打印1到100之间的数字? 

为此,我们可以使用递归。

C/C++编程笔记: C语言编程面试常见问题,全是经典题!_c++_03

什么是volatile关键字? 

volatile关键字旨在防止编译器对可能以编译器无法确定的方式更改的对象进行任何优化。 

声明为volatile的对象从优化中被省略,因为它们的值可以随时通过当前代码范围之外的代码进行更改。


变量可以同时是const和volatile吗? 

是的,const表示无法为变量分配新值。该值可以由其他代码或指针更改。例如,以下程序可以正常运行。

C/C++编程笔记: C语言编程面试常见问题,全是经典题!_c++_04

本次分享就到这里了,希望对大家有帮助!哦对了,其实这篇文章和笔者前天分享的面试题分享可以一起看哦!