-1只会减去 sizeof(int*)。a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地 址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5]。
,不运用第三个变量。即a=3,b=5,交换之后a=5,b=3;
答:有两种解法, 一种用算术算法, 一种用^(异或)
a = a + b;
b = a – b;
a = a – b;
or
a = a^b;// 只能对int,char..
b = a^b;
a = a^b;
or
a ^= b ^= a;
,并比较其优缺点。
答:原子操作、信号量机制、自旋锁、管程、会合、分布式系统
答:资源竞争及进程推动依次非法;互斥、恳求保持、不行剥夺、环路
×100000赋值,我们可以用(unsigned int*)0×100000 = 1234; 那么要是想让程序跳转到肯定地址是0×100000去执行,应当怎么做?
答:*((void (*)( ))0×100000 ) ( );
首先要将0×100000强制转换成函数指针,即: (void (*)())0×100000。然后再调用它: *((void (*)())0×100000)(); 用typedef可以看得更直观些:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0×100000)();
15.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0×801000;
p2=(unsigned long *)0×810000;
请问
p1+5=______;
p2+5=______;
答案:801005;810014。不要遗忘了这个是16进制的数字,p2要加20变为16进制就是14
16、设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too; DATE max;
则语句 printf(\"%d\",sizeof(too)+sizeof(max));的执行结果是:______
答:DATE是一个union, [5],
data是一个struct, + DATE20 + double8 = 32.
第 7 页 共
IT公司笔试题总结 来自淘豆网m.daumloan.com转载请标明出处.