红联Linux门户
Linux帮助

Linux C开发面试题

发布时间:2007-08-29 00:47:33来源:红联作者:Oracleust
下列程序在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;
文章评论

共有 24 条评论

  1. kaishui 于 2010-02-24 23:08:48发表:

    a=a&(0<<3);这个也不对啊,这样a=0
    a=a&(~(1<<3));

  2. ziyueling 于 2009-11-23 15:50:38发表:

    1# Oracleust


    dd

  3. xuruiyi 于 2009-11-22 11:35:43发表:

    很简单哦

  4. yuchao668 于 2009-11-15 05:43:06发表:

    6# mailtoyj


    p=(int *)(0x67a9);很明显的错误;
    应该是p=(int )(0x67a9);或直接为p=0x67a9;

  5. clotfish 于 2009-11-07 18:56:55发表:

    第一题:写出下述程序结果:
    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]);
    }


    这一题有点意思。

  6. clotfish 于 2009-11-06 15:23:15发表:

    写了6年的windows代码了,好象转linux啊!

  7. shilinlin0321 于 2009-10-30 17:19:33发表:

    顶一下先

  8. BSDix 于 2009-09-24 13:12:32发表:

    和Linux一点关系没有。。。

  9. wang7131984 于 2009-09-23 21:41:58发表:

    仔细实验一下发现楼上的方法还是行的通的,看来是我少见多怪了。

  10. wang7131984 于 2009-09-22 23:44:29发表:

    上面的代码从第0位开始,如果从第一位可以用16进制的4

  11. wang7131984 于 2009-09-22 23:42:01发表:

    LS的代码是行不通的。立即数怎么能够取地址,立即数存在代码段中,在执行过程中直接载入寄存器,根本就没有地址。LZ的答案是正确的吧。
    清位
    a &= ~0x8
    设置位
    a |= 0x8
    这东西在linux中还是挺常用的吧

  12. shenhao0129 于 2009-09-22 22:14:17发表:

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

    答: *((int*)0x67a9) = 0xaa66;

  13. failgod 于 2009-09-22 14:46:53发表:

    引用:
    2、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
    答: int a;
    a=a|(1
    mailtoyj 发表于 2009-5-13 14:44

    第二个清零错了,这样做会全清零的
    按你的写法可以这样写:
    a &= (~(1 << 2));

  14. eeuu 于 2009-09-18 15:52:38发表:

    半懂不懂的!

  15. zhangshijie 于 2009-09-18 13:07:01发表:

    {:3_108:}

  16. chyf3942 于 2009-05-20 21:35:19发表:

    唉,忘完了

  17. mailtoyj 于 2009-05-13 14:47:27发表:

    其它的,好象没有什么问题了!学习中。。。。。。。

  18. mailtoyj 于 2009-05-13 14:46:51发表:

    1、写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
    答: #define MIN((A),(B)) ((A)>(B)?(B):(A))

  19. mailtoyj 于 2009-05-13 14:44:20发表:

    2、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
    答: int a;
    a=a|(1<<3);
    a=a&(0<<3);

  20. mailtoyj 于 2009-05-13 14:43:05发表:

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

    答: int *p = 0x67a9;

    *p = 0xaa66;

    答: int *p;
    p=(int *)(0x67a9);
    *p=oxaa66;

  21. 微宝贝 于 2009-05-13 00:09:48发表:

    还会点呢,基本上看得懂啊,呵呵

  22. 微宝贝 于 2009-05-13 00:09:45发表:

    还会点呢,基本上看得懂啊,呵呵

  23. yihao530 于 2009-05-11 10:22:46发表:

    [i=s] 本帖最后由 yihao530 于 2009-5-11 10:24 编辑 [/i]

    哪题错了 乱说

  24. yorktown 于 2007-08-29 06:15:25发表:

    晕! 错了2体!!!!!!!!!!!!!!1:49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1 :49ab:1