【发布时间】:2015-01-17 18:02:19
【问题描述】:
函数调用之间的“转移价值”(按价值?不是百分百确定英文术语)是什么意思。给我这样做的例子,假设我使用指向堆栈变量的指针。
我真的不明白“转移价值”的概念。函数应该返回另一个函数什么?
如果我使用下面示例中的指针,我只是传输指针地址?那么如何使用带有指向堆栈变量的指针的传输值呢?
void fun1(){
int x = 44;
int *y = &x;
}
void fun2(){
int *y;
}
从第一个答案:
void fun1(){
int x = 44;
fun2( &x );
printf( "%d\n", x ); // prints 55
}
void fun2( int *value ){
printf( "%d\n", *value ); // prints 44
*value = 55; // changes the value of `x` in `fun1`
}
对我来说,似乎我只是将一个指向堆栈变量 (x) 的指针转移到 fun2?所以实际的问题是:如何使用指向堆栈变量的指针在函数调用之间传输值?
您可能已经回答了这个问题?但是我想确定这一点,如果我做对了,我想确定一下,所以到目前为止我的想法是:我首先将一个指向堆栈变量 x 的指针从 fun1 发送到 fun2。当 fun2 被调用时,我通过 *value = 55 将 int x = 44 的值更新为 55,并且 *value 是一个指向堆栈变量的指针,所以我实际上在指向 a 的指针的帮助下更新了变量 x 的值堆栈变量。但是,我在哪里使用这种指向堆栈变量的指针技术在函数之间传输值。我是否在函数之间传递值?我不这么认为,如果我这样做了,我应该向另一个函数返回一些东西。现在看来我只是在函数调用之间更新了一个变量?但也许这个问题已经回答了?但是对于函数调用之间传递值是什么意思,我还是有点困扰。
【问题讨论】:
标签: c variables pointers stack pass-by-value