一道c/c++读程序题,求解答具体原因
题目代码如下:
#include <stdio.h>
#include <stdlib.h>
void fun(int *p1, int *p2, int *s) {
s = (int *)malloc(sizeof(int));
*s = *p1 + *(p2++);
}
int main() {
int a[2] = {1, 2}, b[2] = {10, 20}, *s = a;
fun(a, b, s);
printf("%d \n", *s);
}
这个结果为什么是1呢?题目解析没太看懂,我自认为算的是11,s = 1 + 10 = 11
没太理解等于1的这个原由,求解答,谢谢!
题目给的解析如下:
解析:
本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。