我正在尝试解决分配过程中发生的一个谜。
main和entry函数工作正常,但平均水平却不行。在检查变量是否为常数和arraysize时,似乎它们没有像我解引用它们时那样传递其值。

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

这是代码:

#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

最佳答案

除非被修改的参数是引用的,否则在被调用方中修改参数不会影响调用方的局部变量。

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

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

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

关于c++ - 指针未传递其值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35828308/

10-10 07:15