15道C语言开发面试题(原题分享)
以下是题主参加的一家偏向Linux平台开发的公司软件岗位笔试题,分享原题,后面附上题主91分的部分参考答案^V^)
一、(8分)请问一下程序输出什么结果?
char *getStr(void) { char p[] = "hellow world"; return p; } void test(void) { char *str = NULL; str = getStr(); printf(str); }
二、(5分)test2函数有问题吗,如果有,请支出问题出在什么地方并给出正确答案。
void test2() { char string[10], str[10]; int i; for(i = 0; i < 10; i++) { str[i] = 'a'; } strcpy(string, str); }
三、(5分)用预处理指令#define 声明一个常数,用以表明一年中有多少秒。(忽略闰年问题)
四、(5分)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
五、(8分)你怎么样用C编写死循环呢?
六、(10分)用变量a给出下面的定义:
1、一个整型数;
2、一个指向整型数的指针;
3、一个指向指针的指针,它指向的指针是指向一个整型数;
4、一个有10个整型数的数组;
5、一个有10个指针的数组,该指针是指向一个整型数的;
6、一个指向有10个整型数数组的指针;
7、一个指向函数的指针,该函数有一个整型数参数并返回一个整数;
8、一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
七、(5分)关键字static的作用是什么?
八、(10分)关键字const有什么含意?
下面的声明都是什么意思?
1)const int a;
2)int const a;
3)const int *a;
4)int *const a;
5)int const *a const;
九、(5分)下面的代码输出是什么?为什么?
void foo(void) { unsigned int a = 6; int b = -20; (a - b > 6) ? puts(">6") : puts("<=6"); }
十、(5分)动态分配内存可能发生的问题是什么?
十一、(5分)volatile这个关键字的作用是什么?
十二、(8分)进程之间进行通信的方式有几种,它们分别是什么?
十三、(8分)请写出下面的程序的输出结果:
#include<stdio.h> int main() { int a = 10, b, c, d; b = a++; c = ++a; d = 10 * (++a); printf(" b : %d , c:%d, d :%d ", b , c, d); return 0; }
十四、(5分)进程和线程的区别是什么?
十五、(8分)请列举四种位运算符,并说明它们一般用于什么地方。
部分参考答案:
推荐:《c语言教程》