指针未传递其值

Pointers not passing their value

本文关键字:指针      更新时间:2023-10-16

我正在尝试解决在进行分配时发生的一个谜团。主函数和入口函数工作正常,但一般功能则不然。在检查变量是否常量和数组大小时,它们似乎没有像我取消引用它们时那样传递它的值。

是的,

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

代码如下:

#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;
}

它向我展示了这种错误,当程序命中平均函数时https://i.stack.imgur.com/rEOzN.png

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

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

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

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

代码中存在一些错误。

当您想要将值发送到函数/过程并保存其更改时:

仅在C++:

  • 对于变量:接收 int 和变量时和发送发送(变量)
  • 对于数组:接收 int *array 和发送 send(array)

在 C 语言中:

  • 对于变量:接收 int *变量和发送发送(&变量)
  • 对于数组:接收 int *array 和发送 send(array)