将变量的地址传递给函数

时间:2016-01-22 07:11:09

标签: 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风格的字符串。

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

那里发生了什么?

2 个答案:

答案 0 :(得分:7)

首先这个

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, YOURARRAYLISTOBJECT);

undefined behaviour - 您将未初始化的可变int m_out, m_in; copy(&m_out, m_in); 传递给函数 - 因此尝试复制未初始化的变量。

此:

m_in

在C中没有用。看起来像C ++中的reference

答案 1 :(得分:0)

第一个参数是引用,它只是意味着如果在函数create中修改此字段,该字段仍将保持修改(即使在您调用create()的函数中),因为它指向一个地址而不是一个值。