【发布时间】:2015-12-23 01:08:21
【问题描述】:
我正在尝试将任意结构数组传递给函数。它编译得很好,但它什么也没打印。
这是任意结构数组:aFriend *p_array=new aFriend[index];
函数调用updateTalk(p_array, index);和函数void updateTalk(aFriend an_array[], int a_size)
还有完整的代码:
#include <iostream>
using namespace std;
struct aFriend
{
string name;
int days_ago=0;
};
aFriend addFriend(int& index)
{
aFriend newFriend;
cout<<"Enter friend's name:\t";
cin>>newFriend.name;
do{
cout<<"How many days ago you talked with him/her:\t";
cin>>newFriend.days_ago;
} while (newFriend.days_ago<=0);
index++;
return newFriend;
}
void updateTalk(aFriend an_array[], int a_size)
{
cout<<"an_array[0].name="<<an_array[0].name<<endl;
cout<<"Select one of the following names:\n";
for(int i=0;i<a_size;i++)
{
cout<<"1. "<<an_array[i].name;
}
cout<<endl;
}
void printList()
{
}
int index=0;
int main()
{
cout<<"1. Add friend\n2. Update last talk\n3. Print list\n4. Exit\n";
int pick;
cin>>pick;
aFriend *p_array=new aFriend[index];
switch (pick)
{
case 1: addFriend(index);return main();
case 2: updateTalk(p_array, index); return main();
case 3: printList(); return main();
case 4: return 0;
default: cout<<"Error! Please select one of the available options!\n"; return main();
}
}
【问题讨论】:
-
index开头是0,所以p_array将为空。请改用std::vector。 -
如果这是一项学校作业,并且您必须使用指针,或者您需要分配
p_array以从一开始就包含足够的条目,或者在每次添加条目时重新分配它。 -
你的数组元素永远不会被初始化..
-
永远不要递归调用
main!使用循环。 -
使用
std::vector是简单的解决方案。
标签: c++ arrays struct dynamic-memory-allocation