我创建了一个简单的程序来帮助我理解如何动态分配结构。我希望程序从用户获得5个名称和5个帐户,并显示名称和帐户。我知道指针就像一个引用变量,唯一的差异而不是传递值,它传递变量的地址。我为第23行设置了一个突破点(“getline(std :: cin,clientPtr [count] .name);”),第25行(“std :: cin.ignore(std :: numeric_limits :: max(),' \ n');“), 第27行(“std :: cin>> clientPtr [count] .accounts;”),第40行(“std :: cout<<”名称:“<< clientPtr [count] .name;” ),第41行(“std :: cout<<”名称:“<< clientPtr [count] .name;”),第31行(showInfo(& client);)。当我调试时,它显示第41行没有执行。它应显示每个客户的名称和帐户。在这种情况下,它不是。我不确定为什么,只是我的一点背景,我是C ++的新手,以及使用调试器。我正在使用xcode 8.2,我使用的调试器是lldb。我在这里学习,所以一切都会有所帮助。感谢。
#include <iostream>
#include <limits>
struct BankInfo
{
std::string name;
std::string accounts;
};
void showInfo(BankInfo*);
int main()
{
BankInfo client;
BankInfo* clientPtr=nullptr;
clientPtr = new BankInfo[5];
for(int count =0; count < 5; count++)
{
std::cout << "Enter your name:";
getline(std::cin,clientPtr[count].name);
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
std::cout << "Enter you account number:";
std::cin >>clientPtr[count].accounts;
}
showInfo(&client);
return 0;
}
void showInfo(BankInfo* clientPtr)
{
for(int count =5; count < 5; count++)
{
std::cout <<"Name:" << clientPtr[count].name;
std::cout <<"Account:" << clientPtr[count].accounts;
}
}
答案 0 :(得分:0)
你把错误的东西交给showInfo()
。您有两个变量..一个BankInfo变量和一个大小为5的动态分配数组。
你想迭代后者,而不是前者。
将showInfo(&client);
更改为showInfo(clientPtr);
或许可以做到这一点?
答案 1 :(得分:0)
所以我修复了我犯了几个错误的解决方案,但谢谢你的建议。这就是我做的。
#include <iostream>
#include <limits>
struct BankInfo
{
std::string name;
std::string accounts;
};
void showInfo(BankInfo*);
int main()
{
BankInfo client;
BankInfo* clientPtr=nullptr;
clientPtr = new BankInfo[5]; //Allocate an array of BankInfo struct on the heap
for(int count =0; count < 5; count++)
{
std::cout << "Enter your name:";
getline(std::cin,clientPtr[count].name); // stores the value in the name member
std::cout << "Enter you account number:";
std::cin >>clientPtr[count].accounts; // stores the value in accounts member
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
}
showInfo(clientPtr);
delete [] clientPtr;
clientPtr = nullptr;
return 0;
}
void showInfo(BankInfo* clientPtr)
{
for(int count =0; count < 5; count++)
{
std::cout <<"\nName:" << clientPtr[count].name; // dereference the pointer to the structure
std::cout <<"\nAccount:" << clientPtr[count].accounts; // dereference the pointer to the structure
}
}
答案 2 :(得分:-1)
for(int count=1 ; count<=5 ; count++)
{
//do your stuff here
}