gpt4 book ai didi

c++ - 在 C++ 中访问传递的结构数组

转载 作者:行者123 更新时间:2023-11-28 02:56:46 24 4
gpt4 key购买 nike

我通过阅读论坛和书籍来学习 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 中,实际上是什么。

感谢您的关注!

最佳答案

如果要改变Nmbr指针的值,需要通过引用或指针传递,而不是通过值传递。像这样:

void Read (Comber *&Nmbr, int *N)

main 中的代码 Nmbr 不会被更改。

关于c++ - 在 C++ 中访问传递的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21803715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com