广嵌培训第一周

     第一周的学习,就感觉到了广嵌的老师都很厉害,来这里学习的人也很努力.相信在这样一个坏境中我能够有所收获.哈,发觉离我linux驱动的目标又近一步了.

     这一周,主要是让老师摸摸我们的底子,让我们做了一份试卷一份是linux的,另一份是c语言的.

     c语言试卷的一些问题的认识:

     (1),++表达式

     (A)a+=(a++);(B)a +=(++a);(C)(a++)+=a;(D)(++a)+=(a++)

     答案是9,10,错误,11.第4小题,展开得(++a)=(++a)+(a++),右边结果所得值赋给左边,所以左边的++a,a不用自增,结果a的值还是11,不是12.

  

     (2),地址操作问题

     对绝对地址0x100000赋值

     (unsignedint*)0x100000=1234,0x100000就会被赋予1234的值

     

      让程序跳转到绝对地址0x100000去执行

      首先将ox100000强制转换为函数指针void(*)()0x100000

      执行函数指针*(void(*)()0x100000)

 

     (3),转换技巧:在不用第三方参数的值的情况下,交换两个参数的值

      i^=j

      j^=i

      i^=j

 

      Linux试卷的一些认识:

      (1),在linux中,IDE的通道的硬盘被表示为hd scsi被标识为sd,所以,第二个IDE通道的硬盘被表示为hdb

 

      (2),下列程序在32位linux或unix中的结果是什么?

      func(char *str)

      {

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

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

      }

 

      main()

      {

           char a[]="123456789";

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

           func(a);

       }

 

      结果为1049

      sizeof()是求对象或类型所占的字节数,而strlen()所算的数组的大小.而在32位即4嗰字节系统中,所以sizeof(str)为4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值