答案为红笔,有没有细致的解答,二道选择题,两道程序填空题,剩下的就是水字数。
11题D肯定不等,因为 q=NULL ,而wp=p
11题我实际打了一遍代码,这个答案肯定有问题
17题的话,define是直接替换,所以变成
k = 4 * x > y ? x : y;
第11题: q = NULL; 指针q 没有指向 ,所以D:* q = * w; 对他赋值操作就是非法的。
第17题: 定义宏:#define MIN(x, y) x > y ? x : y
k = 4 * MIN(i, j); 这句在编译时被替换为: k = 4 * x > y ? x : y; k = 4 * 3 >5? 3:5; k = 3;
第二:1.函数w(int y, int* x), 形参 x 是地址传递,所以在函数体内对x的操作,都将改变主函数中 x 的值。
y = y + * x = 4 + 2 = 6; *x = *x + y = 2 + 6 = 8; 此时主函数中 x = 8, y = 4没被改变。
printf("%d,%d\n", x++, ++y); 输出:8,5
3. *p = a + 3; ==> *p = &a[3] ,*p = 13
j = 3 时,case 3:pritnf("%d", *(--p)); p 先减 1 , * p = 6, 所以输出6;
j = 2 时,case 2:printf("%d", *p++); p 先输出 6 ,p++, * p = 13;
j = 1 时,case 1:
case 2:printf("%d", *p++); p 先输出 13,p++, * p = 15, break;
j = 0时,结束循环。
最终输出:6613