在C中通过引用传递

neu*_*cer 17 c pointers reference function

我试图在C中使用传递引用,以便该函数可以修改传递给它的参数的值.这是函数签名:

int locate(char *name, int &s, int &i)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译它时,我得到这个错误,特指上述行:

错误:在'&'标记之前预期';',','或')'

如果我删除'&'程序将编译,但它显然无法正常运行.这有什么不对?如何通过参考工作打电话?

GMa*_*ckG 37

C没有参考.您需要将指针传递给您要修改的变量:

int locate(char *name, int *s, int *i)
{
    /* ... */

    *s = 123;
    *i = 456;
}

int s = 0;
int i = 0;
locate("GMan", &s, &i);

/* s & i have been modified */
Run Code Online (Sandbox Code Playgroud)


Ash*_*ish 20

C没有引用变量,但您可以将引用视为const指向数据的指针,因此,

使const指针指向这样的数据,以便指针不能指向其他数据,但可以更改指向它的数据.

int  locate (char *name,  int  * const s, int * const i)
Run Code Online (Sandbox Code Playgroud)


wal*_*lyk 7

C不支持通过引用传递.你需要用C++来编写或修改它

int locate(char *name, int *s, int *i)
Run Code Online (Sandbox Code Playgroud)

并传递指向第二个和第三个参数变量的指针.