C++程序无法分配 int 数组?
C++ program can't allocate int array?
我是C++新手,只是学习指针,并尝试使用指针和数组创建一个简单的数字线程序(我知道我可以用更简单的方式做到这一点,但这只是为了练习(。但是,当我尝试运行我的代码时,它在尝试分配数组时冻结。
#include<iostream>
using namespace std;
void createLine(int* p_line, int size);
void printLine(int* p_line, int size);
int main(){
int* p_line = NULL;
int size = 0;
cout << "Enter the size of the number line: ";
cin >> size;
createLine(p_line, size);
printLine(p_line, size); //It doesn't work when printLine is here
delete[] p_line;
}
void createLine(int* p_line, int size){
cout << "Size of the number line: " << size << "." << endl;
p_line = new int[size];
for(int i = 0; i < size; i++){
p_line[i] = i + 1;
}
//If printLine is here, it works
}
void printLine(int* p_line, int size){
cout << "Printing line: ";
for(int i = 0; i < size; i++){
cout << p_line[i] << " , ";
}
}
奇怪的是,如果我将printLine调用移动到createLine的末尾,程序运行良好。我尝试在互联网上查找,但我发现的所有内容似乎都表明这应该运行良好。
我能想到的唯一解释是,该程序在 createLine 完成运行之前尝试运行 printLine,因此当它仍然是 NULL 时,它会尝试访问p_line。但是,如果我理解正确C++,这不应该发生,对吧?
任何解释将不胜感激,谢谢!
C/C++ 中的参数按值传递。因此,您将放弃对createLine()
中p_line
所做的更改。
您可以返回新值,或使用引用 (int *&p_line
( 或使用双指针 (int **p_line
(。
相关文章:
- 按字符值访问int数组
- 将 int 数组转换为 std::vector<int*>
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 整数区间(或 int 数组)中每个数字的出现次数
- Int 数组到C++容器
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何检测将文本文件读入 int 数组的新行
- C++快速将 int 数组内容转储到文本文件中
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 如何制作不允许重复值的 C++ int 数组循环?
- 如何将逗号分隔的文件读取为 2D int 数组?
- int 数组,但索引是字符?
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 将 int 数组转换为带有小数C++的双精度数组
- 将双精度值分配给 int 数组时的类型转换
- 已编辑 我如何将其拆分为 char 和 int 数组
- 从 C++ 中的 int ** 数组访问元素
- C++程序无法分配 int 数组?
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 如何通过头文件中的函数初始化 const int 数组?