1、下列程序中两个printf的输出结果是------------?
int fun(int *ptr, int arr[], int val) { *ptr = 3; //数组里面装的第一个数被重新赋值为3 arr[1] = 3; //数组第二个数也被重新赋值为3 val =3; //虽然val的值改变了 但是没有传递回去 return arr[0]+arr[1]+arr[2]; } int main() { int arr[3]={1,2}; int ret = fun(arr,arr,arr[2]); printf("%d,%d ",arr[0],arr[1]); printf("%d,%d ",arr[2],ret); system("pause"); return 0; }
运行结果如下:
结果分析:可以设置断点进行调试
原来数组arr[3]里面装的{1,2,0}
函数fun的前两个形式参数都是指针的作用,指针所指的内存空间的值改变了,因而后面的值也改变了
改变后的数组里面装的是{3,3,0}