Linux C开发面试试题与答案

下列程序在32位linux或unix中的结果是什么?
func(char *str)
{
printf(" %d",sizeof(str));
printf(" %d",strlen(str));
}

main()
{
char a[]="123456789";

printf(" %d",sizeof(a));

printf(" %d",strlen(a));


func(a);
}

结果: 10 9 4 9


第一题:写出下述程序结果:
int m[][3] = {1,4,7,2,5,8,3,6,9};
int i, j, k = 2;
for (i = 0; i < 3; i++) {
printf(“%d”, m[k]);
}

结果为地址

第二题:下列哪个引用是不正确的?
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a;
(A) a[p-a]; (B) *(&a); (c) p; (D) *(*(a+i));

答:D

第三题:下列4个选项中,哪个结果为6?
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a;
(A) *p + 6; (B) *(p+6); (C) *p += 5; (D) p+5;

答: A B


1、写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

答: MIN(x,y) (x)<(y)?(x):(y)


2、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

答: int a = 2;

int i ;

i = 1 <<2;

a = a | i;


3、在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。写代码去完成这一任务。

答: int *p = 0x67a9;

*p = 0xaa66;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwdzs.html