我的指针并不好,但我必须在现场学习。如果我的理解对我有用,那么这些都应该是下面的有效陈述。
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风格的字符串。
我不明白第一个参数,它是某种类型的地址,让我们说一个浮点数,但它可以是任何东西,一个结构,一个整数等等。
那里发生了什么?
答案 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()
的函数中),因为它指向一个地址而不是一个值。