指针没有传递它们的价值

时间:2016-03-06 14:51:00

标签: c++ arrays pointers

我正试图解决在做出任命时发生的一个谜。 主要和入口功能工作得很好,但平均不起作用。在检查变量是否为常量和数组化时,似乎他们不会在我取消引用它们时传递它的值。

是的,我是指针的新手,所以任何建议都会很棒。

以下是代码:

#include <iostream>
using namespace std;
void entry(int &size, int *arraysize, int &c, int *constant, int *firstArray, int *secondArray);
void average(int &size, int &c, int *arraysize, int *constant, int *firstArray, int *secondArray);
void newarray();
void output();
int main() {
    int size;
    int *arraysize;
    int c;
    int *constant;
    int *firstArray;
    int *secondArray;
    entry(size, arraysize, c, constant, firstArray, secondArray);
    average(size, c, arraysize, constant, firstArray, secondArray);
}

void entry(int &size, int *arraysize, int &c, int *constant, int *firstArray, int *secondArray) {
    cout<<"Enter the size of the array: ";
    cin>>size;
    arraysize = &size;
    cout<<"array size: "<<*arraysize<<endl;
    cout<<"Enter the constant c: ";
    cin>>c;
    constant = &c;
    cout<<"constant c size: "<<*constant<<endl;
    firstArray = new int[*arraysize];
    secondArray = new int [*arraysize];
    for (int i=0; i<*arraysize; i++) {
        cout<<"Enter the "<<i+1<<" element of the first row: ";
        cin>>firstArray[i];
    }
    for (int i=0; i<*arraysize; i++) {
        cout<<"Enter the "<<i+1<<" element of the second row: ";
        cin>>secondArray[i];
    }
}

void average(int &size, int &c, int *arraysize, int *constant, int *firstArray, int *secondArray) {
    cout<<"Array size: "<<*arraysize<<endl;
    cout<<"Constant: "<<*constant<<endl;
}

当程序达到平均功能时,它会显示这种错误 http://i.imgur.com/esF9c04.png

2 个答案:

答案 0 :(得分:1)

修改callee中的参数不会影响调用者的局部变量,除非修改的参数是引用。

像在int参数中一样使用引用。

修改原型声明和函数定义,如下所示:

void entry(int &size, int *&arraysize, int &c, int *&constant, int *&firstArray, int *&secondArray)

答案 1 :(得分:1)

您的代码中存在一些错误。

如果要将值发送到函数/过程并保存其更改:

仅限C ++:

  • 对于变量:接收 int&amp;变量时以及发送发送(变量)
  • 对于数组:接收 int * array 时以及发送发送(数组)

在C:

  • 对于变量:接收 int *变量时以及发送发送(&amp;变量)
  • 对于数组:接收 int * array 时以及发送发送(数组)