C++ 数组和指针-运行时错误

C++ 数组和指针-运行时错误,c++,arrays,pointers,dynamic,C++,Arrays,Pointers,Dynamic,我为我的任务编写了一个程序,涉及指针和数组的动态分配,我遇到了运行时错误,程序崩溃,没有编译错误。节目如下: array.h: #include <iostream> using namespace std; void readArray(float*, int &); void PrintArray(float*, int); #include "array.h" void readArray(float* array, int &size) { a

我为我的任务编写了一个程序,涉及指针和数组的动态分配,我遇到了运行时错误,程序崩溃,没有编译错误。节目如下:

array.h:

#include <iostream>

using namespace std;

void readArray(float*, int &);
void PrintArray(float*, int);
#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;
}
在这里撞车


有人能告诉我PrintArray函数有什么问题吗?

Q:有人能告诉我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);
   ...
float*
readArray(整数大小)
{
浮点*数组=新浮点[大小];
cout数组[i];
}

coutQ:有人能告诉我printary函数有什么问题吗

你的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);
   ...
float*
readArray(整数大小)
{
浮点*数组=新浮点[大小];
cout数组[i];
}

coutreadArray()
的参数
array
是通过值传递的,因此
main()
中的
array
即使在
readArray()
中更改,也保持
NULL
。使其通过引用进行传递。此外,
size
不需要通过引用传递

改变

void readArray(float* array, int &size)


readArray()
的参数
array
通过值传递,因此
main()
中的
array
保持
NULL
,即使您在
readArray()
中对其进行了更改。使其通过引用进行传递。此外,
size
不需要通过引用传递

改变

void readArray(float* array, int &size)

void readArray(float*& array, int size)