2015-10-13 62 views
-2

这应该打印3,5,-1。我不明白发生了什么事情。 函数foo被调用时发生了什么?我无法理解函数foo中的最后4行。我了解其他一切。困惑这些指针?

enter image description here

+5

请发布问题,代码,你的理解以及你对什么感到困惑。 –

+0

显然,'y ++'这行增加了指针,而不是它指向的值。你需要使它成为'(* y)++'。在这个练习中,他们展示了通过引用'&var'和传递'* var'指针的区别。在传递指针时,需要明确的解引用。 – alvits

+0

“最后四行”?你的意思是从'* y = z;'开始? – Beta

回答

0

功能从本质上变成

foo(&x, arr[0], 3) 
z = z+2 // z=3+2=5 
x = *y -z; // x=arr[0]-5=4-5=-1 
*y = z; //arr[0]=5 

通知a仍然3,因为它是按值传递。 b指向函数执行后数组的起始位置5。和c-1,因为通过引用。