【发布时间】:2016-06-20 02:12:59
【问题描述】:
我正在尝试解决在执行任务时发生的一个谜团。 main 和 entry 函数工作得很好,但一般的函数不行。在检查变量是否为常量和数组大小时,似乎它们并没有像我取消引用它们时那样传递它的值。
是的,我是指针新手,所以任何建议都会很棒。
代码如下:
#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 *arraysize参数不允许您在 main 中更改int *arraysize;?