您的位置:首页 > 其它

广嵌培训第一周

2009-09-13 13:29 148 查看
第一周的学习,就感觉到了广嵌的老师都很厉害,来这里学习的人也很努力.相信在这样一个坏境中我能够有所收获.哈,发觉离我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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: