1. 主页
  2. 文档
  3. C语言教程
  4. C语言面试
  5. 常见的 C 编程面试问题二

常见的 C 编程面试问题二

C语言的主要特点是什么?
C是一种过程语言。C 语言的主要特点包括对内存的低级访问、简单的关键字集和简洁的风格。这些特性使其适用于操作系统或编译器开发等系统编程。 

i++ 和 ++i 有什么区别?
1) 表达式“i++”返回旧值,然后增加 i。表达式 ++i 增加值并返回新值。 
2)后缀++的优先级高于前缀++。 
3)后缀++的结合性是从左到右,前缀++的结合性是从右到左。 
4)在C++中,++i可以作为左值,而i++不能。在 C 中,它们都不能用作左值。 
有关详细信息,请参阅 ++*p、*p++ 和 *++p 之间的区别 。
什么是左值?
l 值或位置值是指可以在赋值运算符左侧使用的表达式。例如,在表达式“a = 3”中,a 是左值,3 是右值。 
l 值有两种类型: 
“nonmodifiable l-value”表示不能修改的 l 值。const 变量是“不可修改的左值”。 
“modifiable l-value”表示可以修改的 l 值。
数组和指针有什么区别?
请参阅数组与指针
如何编写自己的 sizeof 运算符?

#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)

如何在不使用循环的情况下打印 1 到 100 的数字? 
为此,我们可以使用递归。

/* Prints numbers from 1 to n */
void printNos(unsigned int n)
{
if(n > 0)
{
printNos(n-1);
printf("%d ", n);
}
}

什么是volatile关键字? 
volatile 关键字旨在防止编译器对可能以编译器无法确定的方式更改的对象应用任何优化。 
声明为 volatile 的对象在优化中被忽略,因为它们的值可以随时被当前代码范围之外的代码更改。
变量可以同时是 const 和 volatile 吗? 
是的, const 意味着不能为变量分配新值。该值可以由其他代码或指针更改。例如以下程序可以正常工作。 

#include <stdio.h>
int main(void)
{
const volatile int local = 10;
int* ptr = (int*)&local;
printf("Initial value of local : %d \n", local);
*ptr = 100;
printf("Modified value of local: %d \n", local);
return 0;
}

 

这篇文章对您有用吗?