c - 将变量地址传递给函数

标签 c function pointers parameter-passing addressof

我不太擅长指点,但我必须在现场学习。如果我的理解对我有帮助,那么下面这些应该都是有效的陈述。

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

(*a) == b;  //this should be true

如果你有这样的功能:

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

但是我看到了这样一个函数

create(float& tp, void* form, char* title);

我理解 void 指针,它可以转换为任何东西,我理解字符指针,它基本上是一个 c 风格的字符串。

我不明白第一个参数,它是某种类型的地址,比方说一个 float ,但它可以是任何东西,一个结构体,一个 int 等。

那里发生了什么?

最佳答案

先这个

int m_out, m_in;

copy(&m_out, m_in);

undefined behaviour - 您将未初始化的 vaiable m_in 传递给函数 - 因此尝试复制未初始化的变量。

这个:

create(float& tp, void* form, char* title);

在 C 中没有意义。看起来像 reference来自 C++。

关于c - 将变量地址传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940964/

相关文章:

c++ - 在一个 Linux 发行版上使用 g++ 编译的可执行文件在另一个发行版上使用是否有限制?

python - 如何将颠倒的元音大写?

swift - 有没有更简单的方法以编程方式查看 UIImageView?

pointers - (Think) Pascal 中指向指针的指针和 NewHandle 函数

c - 带有指针变量的地址数组

C : Copy shorter string into longer without using built in functions

c - 指针 (x2) 的地址是什么?

c - 编写汇编代码程序gdb

c++ - "Dividing"一个整数分成几 block (对某些收入阈值征收不同的税 - C++)

c - c中的两个函数使用相同的指针