![](/img/trans.png)
[英]How can I get the highest value generated from within a function using struct 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访问它们的成员。
如果你想坚持使用char指针,我个人只需将你的“注册”功能的主体放在main中。
如果你仍然需要这个函数,你应该使用std :: strcpy从你的临时代码复制到成员。
变量buyersName
和其他变量是它们所在函数的本地变量,这意味着函数返回后它们的指针无效。
最好的解决方案是使结构成员变量适当的C ++字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.