指针未传递其值
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) 时
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错