C语言 交换指针

Python013

C语言 交换指针,第1张

int p[]

=>

p = &p = &p[0]

&p , 可视作一个忽略[0]语法标示的缩写.

swap(&p, &q)

=>

swap(&p[0], &q[0])

=>

1 <=> 5

基本上变量宣告後, 其位址不可变更. 此功能应采用额外的指针变量, 进行交换操作.

这个地方会出现不好理解的东西。

调用函数的时候,你放入了int

a

int

b

但是这其实不是你的main函数中的a

b只是相当于他们的副本,也就是复制了一个a

和b

传入函数

所以你改变的只是传入的副本

也就是复制的副本a

b所以在main函数中打印的ab不会出现变化

依然是a=3,b=6

现在回答第二个问题,怎么会让ab的值变化:传入指针,也就是在main函数中使用a

b的指针,然后吧指针传入到函数里面

这个时候ab就会真正的发生变化,因为指针指向的是ab的物理地址,也就是真正的ab,不是副本,这个时候就会改变ab的值。想要理解,可以去百度传值参数和引用参数。纯手打,望采纳

图一输出“3,4”,图二输出“B,A”。

C语言采用“值传递”:当形参是普通变量(整型、浮型和字符型)时,实参的数值赋给形参,接着形参在其函数发生变化(就没有实参的事了),跳回主函数形参销毁而实参保持现状;当形参是指针变量(整型、浮型和字符型的指针变量)时,传参时应该传地址(实参是地址),接着通过访问实参地址修改相应空间,实参地址的空间发生改变,实参的数值发生改变。