如何从被调用的函数中更改调用函数中的变量?

kak*_*aka 7 c

如何try()修改函数(以及它的调用)以从下面的程序中获得11的输出?

#include <stdio.h>

/* declare try() here */

int main(void)
{
    int x = 10;
    try();              /* Call can change */
    printf("%d\n", x);
    return 0;
}

void try()              /* Signature can change */
{
    /* how to change x here?? */
}
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 20

要更改x函数内的值,try()请使用指向变量的指针并在其中进行更改.

例如,

void try(int *x)
{
    *x = 11;
}

int main()
{
    int x = 10;
    try(&x);
    printf("%d",x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是C代码,而不是C++.参考不可用. (24认同)
  • 如果这是WAS C++,它无论如何都不会编译.他将功能称为"尝试".这是一个保守的词.阅读标签. (5认同)
  • 它最初标记为"C",所以我们不应该假设它是C++. (4认同)
  • @Computer Guru,Jeff M:老实说,我同意你们两个人的看法.虽然对初学者来说可能会让人感到困惑,但我认为提供更多信息而不是更少信息会更好. (2认同)

Ed *_* S. 1

您需要传递一个指向内存位置的指针(原始指针的副本)。否则,您只是修改原始值的副本,该副本在函数退出时就消失了。

void Try( int *x );

int main( void )
{
    int x = 10;
    Try( &x );
    /* ... */
}

void Try( int *x )
{
    *x = 11;
}
Run Code Online (Sandbox Code Playgroud)