传递数组的基址

时间:2015-08-12 14:25:57

标签: arrays

java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

javac 1.7.0_09

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)

任何人都可以向我解释上面的代码。我输出为10(在foo中)和1(在main中)。 但我期待10和10(foo和main)。在函数foo中,基地址指向& i。

2 个答案:

答案 0 :(得分:1)

p实际上是foo的本地(将其视为一个本地变量,它从调用者那里获得数据初始化),因此对它的更改不会反映在匹配参数中(在此情况1}})。现在,如果您更改了数组的内容(也就是aryp指向),那么这将反映在输出。

答案 1 :(得分:1)

指针p是函数foo的本地。因此,更改它的值不会影响main函数的数组。

如果您想从功能ary更改foo的值,请尝试:(当然排除p = &i

p[0] = i;

这将使ary[0] = 10