请选择 进入手机版 | 继续访问电脑版
开启左侧

C语言常见笔试题

  [复制链接]
精华 张勇涛 发表于 2017-3-10 16:39:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本帖最后由 张勇涛 于 2018-11-15 16:31 编辑

专门开一个帖子来把一些经典的C语言笔试题总结,大家可以跟帖!总结总结
面试.jpg

精彩评论50

 楼主| 张勇涛 发表于 2017-3-10 18:11:13 | 显示全部楼层
以下为Linux下的32位c程序,请计算sizeof的值

void func ( char str[100] )
{
 sizeof( str ) = ?
}

void *p = malloc( 100 );
sizeof ( p ) = ?

  解答:
……
sizeof( str ) = 4
sizeof ( p ) = 4

char str[10];
cout << sizeof(str) << endl;
 楼主| 张勇涛 发表于 2017-3-10 16:42:44 | 显示全部楼层
本帖最后由 张勇涛 于 2017-3-10 16:44 编辑

嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
这个问题用几个解决方案。我首选的方案是:
while(1)
{
}
一些程序员更喜欢如下方案:
for(;;)
{
}
第三个方案是用 goto
Loop:
...
goto Loop;
 楼主| 张勇涛 发表于 2017-3-10 16:40:29 | 显示全部楼层
本帖最后由 张勇涛 于 2017-3-10 16:44 编辑

用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

 楼主| 张勇涛 发表于 2017-3-10 16:41:08 | 显示全部楼层
写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) (A) : (B))

点评

不错  发表于 2017-3-10 16:41
 楼主| 张勇涛 发表于 2017-3-10 16:43:22 | 显示全部楼层
本帖最后由 张勇涛 于 2017-3-10 16:54 编辑

用变量a给出下面的定义
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )


答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer
 楼主| 张勇涛 发表于 2017-3-10 16:43:50 | 显示全部楼层
本帖最后由 张勇涛 于 2017-3-10 16:54 编辑

关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

 楼主| 张勇涛 发表于 2017-3-10 16:56:30 | 显示全部楼层
关键字const是什么含意?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;


前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。
 楼主| 张勇涛 发表于 2017-3-10 16:57:44 | 显示全部楼层
关键字volatile有什么含意 并给出三个不同的例子。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
 楼主| 张勇涛 发表于 2017-3-10 17:03:35 | 显示全部楼层
嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个全局整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。#define BIT3 (0x1u<<3)
static unsigned int a;
void set_bit3(void)
{
      a |= BIT3;
}
void clear_bit3(void)
{
      a &= ~BIT3;
}



 楼主| 张勇涛 发表于 2017-3-10 17:04:16 | 显示全部楼层
嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
int *p;
P=(int*)0x67a0;
*p=0xaa66;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行 更多
广告位
0351-8210788
周一至周日 9:00-18:00
意见反馈:mind@unigress.com
关注我们

扫一扫关注我们

Powered by Discuz! X3.4 Licensed  © 2001-2013 Comsenz Inc.( 晋ICP备12005011 )