数组和指针 - 运行时错误
Array and Pointers - runtime error
>我为我的作业编写了一个程序,涉及数组的指针和动态分配,我收到运行时错误并且程序崩溃,没有编译错误。这是程序:
array.h :
#include <iostream>
using namespace std;
void readArray(float*, int &);
void PrintArray(float*, int);
数组.cpp :
#include "array.h"
void readArray(float* array, int &size)
{
array = new float[size];
cout << endl;
cout << "Enter the array elements, use spaces: ";
for (int i = 0; i < size; i++)
{
cin >> array[i];
}
cout << endl;
}
void PrintArray(float * array, int size)
{
for (int i = 0; i < size; i++)
{
cout << array[i] << " ";
}
cout << endl;
}
主要.cpp :
#include "array.h"
int main()
{
int size = 0;
cout << "How many elements would you like to enter? ";
cin >> size;
cout << endl;
float *array = NULL;
readArray(array,size);
cout << "The array size is " << size << endl;
PrintArray(array, size);
return 0;
}
示例输出:
How many elements would you like to enter? 3
Enter the array elements, use spaces: 4.0 5.0 6.0
The array size is 3
在这里崩溃
有人可以让我知道打印阵列功能的问题是什么吗?
readArray()
的参数 array
按值传递,因此即使您在 readArray()
中更改了 array
,main()
中的仍然NULL
。使其通过引用传递。此外,size
不需要通过引用传递。
改变
void readArray(float* array, int &size)
自
void readArray(float*& array, int size)
问:有人可以让我知道 PrintArray 函数的问题是什么吗?
答:您的 PrintArray 函数很好。
问题是你永远不会在 readArray 之外传递你分配的数组。
更好:
float *
readArray(int size)
{
float* array = new float[size];
cout << endl;
cout << "Enter the array elements, use spaces: ";
for (int i = 0; i < size; i++)
{
cin >> array[i];
}
cout << endl;
return array;
}
int main()
...
float *array = readArray(size);
...
笔记:
如果你在 array.h 中声明了 readArray() 的原型,则需要更新它。
有很多方法可以实现此目的,但基本问题是,如果您在函数内分配数组,则需要
**
(指向指针的指针)而不是*
。 我相信将数组指针作为函数返回传递回可以说是最干净的解决方案。
恕我直言...
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 运行时错误:引用绑定到类型为"int"的空指针
- 运行时错误:基0x000000000000溢出到0xffffffffffffffff的指针索引表达式 (basic_st
- 在指向矢量的智能指针上使用 push_back() 时运行时错误
- C 代码的运行时错误(基于指针)
- 使用MAP指针时运行时错误
- C 指针运行时错误
- C++指针运行时错误 - 使用指针设置变量然后检索
- 返回指针时运行时错误
- 访问指针类成员变量c++时发生运行时错误
- 成员函数指针运行时错误——ESP的值在函数调用中没有正确保存
- 运行时错误C++程序:检测到glibc,munmap_chunk(),指针无效
- 内存运行时错误:我们在哪里删除这个指针
- 传递派生类指针时的运行时错误
- 数组和指针 - 运行时错误
- c++对象指针的优先级队列在运行时错误为无效堆
- 指向结构的指针出现运行时错误
- 检查指针是否为NULL并导致运行时错误