如何使用 C++ 中的函数更新结构的值
how can i update value of a struct using a function in C++?
我在这里蔑视了一个结构
struct Owner{
char* ownerName;char* fatherName;char* address;};
void registerV(Owner *);
main(){
这里我初始化所有者
struct Owner owner;
owner.ownerName="Imran Ali";
owner.fatherName="Ali Khokhar";
owner.adress="KhushalPura";
registerV(&owner);
}
在这个函数中,我正在从用户那里获取输入,我必须使用另一个函数在主要部分显示这些输入。但是当我尝试这样做时,我得到垃圾值
void registerV(struct Owner *ownerPtr)
{
char buyersName[50];
char fatherName[50];
char adress[100];
cin.getline(buyersName, 50);
cout << " Enter Buyers Name : " ;
cin.getline(buyersName, 50);
(*ownerPtr).ownerName=buyersName;
cout << " Enter Fathers Name : " ;
cin.getline(fatherName, 50);
(*ownerPtr).fatherName=fatherName;
cout << " Enter Adress : " ;
cin.getline(adress, 100);
(*ownerPtr).adress=adress;
}
当我尝试查看主函数中的值时,我得到垃圾值。请帮助我。
所有者变量的字段使用数据(局部变量,如 fatherName
)进行初始化,一旦registerV
退出,这些数据就会超出范围。
在此处查看使用std::string
,但您还需要更好地了解内存管理和变量范围。
与其解决程序中的每个单独问题,不如让我解决两个一般问题:
- 不要使用指针。相反,按值传递和返回对象。
- 不要使用
char
数组。请改用std::string
。
试试这个:
// Untested code
#include <iostream>
#include <string>
struct Owner{
std::string owner;
std::string father;
std::string address;
};
Owner registerV();
main(){
struct Owner owner;
owner = registerV();
}
Owner registerV() {
Owner result;
std::cout << " Enter Buyers Name : ";
std::getline(std::cin, result.ownerName;
std::cout << " Enter Fathers Name : " ;
std::getline(std::cin, result.fatherName);
std::cout << " Enter Adress : " ;
std::getline(std::cin, result.address);
return result;
}
所有者所有者之前的 struct 关键字;是不必要的。
无需取消引用指针并使用 (*pStruct).member 访问其成员,您可以使用 pStruct->member 直接访问它们。
如果你想坚持使用字符指针,我个人只会把你的"寄存器"函数的主体放在main中。
如果您仍然需要该函数,则应使用 std::strcpy 将值从临时函数复制到成员。
变量
buyersName
和其他变量是它们所在函数的局部变量,这意味着指向它们的指针在函数返回后无效。
最好的解决方案是使结构成员变量正确C++字符串。
相关文章:
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- LLVM:在运行时更新数据结构
- 如何通知侦听器结构的哪个字段已更新
- C++更新结构
- C++更新结构偏移量
- 为什么我的函数只在我用 & 符号传递结构时才更新结构?
- 传递和更新结构阵列
- 用于在具有更新查询的二维矩阵中查找最大值的最佳数据结构
- 存储将经常更新的大数组的正确结构是什么
- 给定一个微秒值,如何准确地得到一个时间值结构体?/*更新获取负值*/
- 什么是支持优先级、更新、推送和弹出的最佳数据结构
- OpenMP 更新结构体的最快方法
- 如何使用 C++ 中的函数更新结构的值
- For循环未更新结构对象
- 检测c++结构从单元测试更新
- 在c++中自动更新新结构体中的相关值
- 指向结构体作为函数参数的指针-为什么不更新其值
- 在c++中,结构体没有更新其成员变量之一
- 搜索和更新整数值列表最快的数据结构是什么?