将变量的地址传递给函数

use*_*950 1 c pointers function parameter-passing addressof

我指点不是很好,但我必须在现场学习.如果我的理解对我有用,这些都应该是以下有效的陈述.

int* a;
int b = 10;
a = &b;
(*a) = 20;

(*a) == b;  //this should be true
Run Code Online (Sandbox Code Playgroud)

如果你有这样的功能:

void copy(int* out, int in) {
    *out = in;
}

int m_out, m_in;

copy(&m_out, m_in);

m_out == m_in; // this should also be true
Run Code Online (Sandbox Code Playgroud)

但是我看到了这样的功能

create(float& tp, void* form, char* title);
Run Code Online (Sandbox Code Playgroud)

我理解void指针,它可以转换为任何东西,我理解字符指针基本上是ac样式字符串.

我不明白第一个参数,这是某种类型的地址,让我们说一个浮点数,但它可以是任何东西,结构,一个int等.

那里发生了什么?

gio*_*gim 7

首先这个

int m_out, m_in;

copy(&m_out, m_in);
Run Code Online (Sandbox Code Playgroud)

未定义的行为 - 您将未初始化的vaiable传递m_in给函数 - 因此尝试复制未初始化的变量.

这个:

create(float& tp, void* form, char* title);
Run Code Online (Sandbox Code Playgroud)

在C中没有意义.看起来像C++的参考.