gpt4 book ai didi

C++ 使用结构指针更新数据成员

转载 作者:太空狗 更新时间:2023-10-29 20:29:22 24 4
gpt4 key购买 nike

我有一个应该很简单的问题。我有一个全局函数 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com