【发布时间】:2012-09-26 04:01:34
【问题描述】:
我对 C++ 有点陌生。我习惯用 Java 编程。这个特殊的问题给我带来了很大的问题,因为 C++ 在处理数组时不像 Java。在 C++ 中,数组只是指针。
但是为什么会出现这样的代码:
#include <iostream>
#define SIZE 3
using namespace std;
void printArray(int*, int);
int * getArray();
int ctr = 0;
int main() {
int * array = getArray();
cout << endl << "Verifying 2" << endl;
for (ctr = 0; ctr < SIZE; ctr++)
cout << array[ctr] << endl;
printArray(array, SIZE);
return 0;
}
int * getArray() {
int a[] = {1, 2, 3};
cout << endl << "Verifying 1" << endl;
for (ctr = 0; ctr < SIZE; ctr++)
cout << a[ctr] << endl;
return a;
}
void printArray(int array[], int sizer) {
cout << endl << "Verifying 3" << endl;
int ctr = 0;
for (ctr = 0; ctr < sizer; ctr++) {
cout << array[ctr] << endl;
}
}
为验证 2 和验证 3 打印任意值。也许这与数组真正作为指针处理的方式有关。
【问题讨论】:
-
数组不是指针。无论如何,如果您想要 Java 之类的东西,请使用
std::array之类的容器。 -
至于随机打印,我看到的一件事是:stackoverflow.com/questions/6441218/…
-
你返回的是一个指针,而不是一个数组。更糟糕的是,当
getArray返回时,它是一个不再存在的内存指针,因此尝试使用返回值会导致未定义的行为。 -
阅读这篇文章,消除了我对数组与指针的混淆......c-faq.com/aryptr/aryptr2.html
标签: c++ arrays pointers return