我有一个应该很简单的问题。我有一个全局函数 (setData),它接受一个指向我的测试结构的指针。当我尝试更新数据成员时它不起作用。
#include <iostream>
using namespace std;
struct test {
int data;
};
void setData(test* tp, int newData) {
test t = *tp; // I think the problem is here.
t.data = newData;
}
void printData(test* tp) {
test testStruct = *tp;
cout << testStruct.data;
}
int main()
{
test ts;
ts.data = 22;
setData(&ts, 44);
printData(&ts);
}
最佳答案
test t = *tp; // I think the problem is here.
是的,你是对的!您的代码正在复制、修改它,然后立即丢弃。
您应该改为修改通过指针传入的结构:
tp -> data = newData;
注意 ->
运算符。它是 .
成员访问运算符的等效指针。相当于
(*tp).data = newData;
但它看起来更好。
您可以在 printData
中做同样的事情,尽管这只是效率低下:
cout << tp -> data;
关于C++ 使用结构指针更新数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176729/