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

时间:2014-02-15 21:12:34

标签: c++ arrays structure access-violation

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

感谢您对此进行调查!

1 个答案:

答案 0 :(得分:2)

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

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

Nmbr中的代码main未更改。