我正在尝试解决分配过程中发生的一个谜。
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/