一、
此代码输出结果为:a=1 b=10
解析:代码中,主函数中调用了自定义函数fun(),传参为整型变量 a 和 b 的值,而值传递过程下,形参的改变不会对实参的值造成影响,所以,a,b依然为主函数中定义的值,即a=1,b=10;
二、
此代码输出结果为:a=10 b=1
解析:代码中,主函数中调用了自定义函数fun1(),传参为整型变量 a 和 b 的地址,而地址传递过程下,形参的改变会对实参的值造成影响,又因为函数fun1()的功能实现了两个数的值的交换,所以a,b为相互交换后的值,即a=10,b=1;
三、
此代码输出结果为:a=1 b=10
解析:代码中,主函数中调用了自定义函数fun1(),传参为整型变量 a 和 b 的地址,自定义函数中使用指针型变量接收传参,自定义函数将 指针a 和 指针b的指向互换,即交换后,指针a保存的地址为整型变量b的地址,指针b保存的地址为整型变量a的地址,但整型变量a,b中的值并未发生改变,且主函数中输出语句打印的是 a 和 b 的值,所以 a=1,b=10;
四、
char 类型变量的存储范围是【-128,+127】,该程序从-60开始循环,当执行68次后,a[68] = -128,再之后,会从+127循环向下,即a[69] = +127,当执行197次时,a[196] = 0,代码继续执行,a[197] = -1,但是输出语句中,strlen函数会计算到 \0 停止,且计算结果不包含 \0,此代码中strlen计算完第196个数后,遇到了0,计算结束,所以输出结果为 196
五、
arr+1地址为:0x1020+1*4*4 = 0x1030;
arr[0]+2地址为:0x1020+2*4 = 0x1028;
*(arr+2)+3地址为:0x1020+2*4*4+3*4 = 0x104c;
p+2的地址为:0x1020+2*4*4 = 0x1040;
*(p+1)的地址为:0x1020+4*4 = 0x1030;
*(p+1)+1的地址为:0x1020+1*4*4+1*4 = 0x1034;
&p+2的地址为:0x600+2*8 = 0x610;