我正试图解决在做出任命时发生的一个谜。 主要和入口功能工作得很好,但平均不起作用。在检查变量是否为常量和数组化时,似乎他们不会在我取消引用它们时传递它的值。
是的,我是指针的新手,所以任何建议都会很棒。
以下是代码:
#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
答案 0 :(得分:1)
修改callee中的参数不会影响调用者的局部变量,除非修改的参数是引用。
像在int
参数中一样使用引用。
修改原型声明和函数定义,如下所示:
void entry(int &size, int *&arraysize, int &c, int *&constant, int *&firstArray, int *&secondArray)
答案 1 :(得分:1)
您的代码中存在一些错误。
如果要将值发送到函数/过程并保存其更改:
仅限C ++:
在C: