我正在通过阅读论坛和书籍来学习C ++,所以我对程序员的世界有点新意。 所以请不要犹豫,改进我的代码因为我渴望学习!
我在访问传递给函数的结构数组时遇到问题。 这是我的代码:
struct Comber
{ double real;
double im;
double mod;
};
int main (void)
{
struct Comber *Nmbr=NULL; //Nmbr Initialised for passing to Read where it's re-declared
int N;
Read(Nmbr, N);
Module(Nmbr, N);
}
void Read (Comber *Nmbr, int &N)
{
cout<<"\nHow many of those numbers do you have ?\t";
cin>>N;
Nmbr = new struct Comber [N];
for(int i=0;i<=N;i++)
{
cout<<"#"<<i<<"\nreal :\t";
cin>>Nmbr[i].real;
cout<<"img :\t";
cin>>Nmbr[i].im;
cout<<"-----"<<endl;
}
}
void Module (Comber *Nmbr, const int &N)
{
for(int i=0;i<N;i++)
{
//Here's where my problem is at.
Nmbr[i].mod=sqrt(pow(Nmbr[i].real,2)+pow(Nmbr[i].im,2));
}
}
我收到了访问冲突,因为没有存储数据或我正在查找错误的地方。 (对 ?) 所以我想知道错误是在Read还是在Module中,实际上是什么。
感谢您对此进行调查!
答案 0 :(得分:2)
如果要更改Number指针的值,则需要通过引用或指针传递它,而不是通过值传递它。像这样:
void Read (Comber *&Nmbr, int *N)
Nmbr
中的代码main
未更改。