关于函数指针之间的传递与输出

img

img


为什么第一个程序运行结果是5 9第二个就是9 5,我的想法是执行一个被调用函数时,形参的值发生改变但不会改变实参的值,这里为什么第二个程序就改变了原来实参值呢

1、由于形参的值是不可进行修改的,第一个a和b代表的是地址的值,这里不能直接进行赋值修改。所以第一个输出 5 9
2、形参的地址指针可以进行修改,第二个的x和y代表的是x和y的地址指针,可以进行修改,交换之后,x指向y的地址,y指向x的地址,而x和y本身的地址并没有改变,由于值是存在地址里边的,所以第二个输出 9 5

第一个是不能进行交换的,指针作为参数时,你可以修改外部指针的指向值,但不能修改指针本身的地址。这和值参不能修改一样。修改指针的地址,就相当于修改值参的值一样的效果