誰にもこのC++コードの何が問題なのか教えてください。 C++で配列を返すことはできません(他の言語のように)ので、ポインタを返しています。私は、「MyArrayという」のアドレスへのポインタを設定するにはポイントがありませんことを学んだ - 「myarrayのは」既にアドレス(最初の項目)C++ n00b学習ポインター、配列へのポインターを返そうとしています
あるので、私は期待出力が1,2,3,4
ました、- 1、4、-993994160、32767
- 1、-1077229596、-1077229588、1075514957
- 1:別の(オンライン)コンパイラの
は、私には、ここでは異なる奇妙な結果を得ています2,3,3(とても近い)
ので、ここで私の危険なコードです:
#include <iostream>
using namespace std;
int* getArray(){
int myArray[] = {1,2,3,4};
int* pointerToArray = myArray;
return pointerToArray;
}
void printArray(int inputArr[], int length) {
for (int i = 0; i < length; i++) {
cout << inputArr[i] << ", ";
}
}
int main()
{
printArray(getArray(),4);
return 0;
}
あなたが提供できるすべてのヘルプは非常に高く評価されては!
この場合、C配列の代わりに 'std :: array'または' std :: vector'を使用してください。 – Jarod42
そして、ローカル変数の参照を返すことはできません。 – Jarod42
ローカル変数へのポインタを返しません。また、 'std :: vector'や' std :: array'を使う方法も学んでください。返された関数内の変数へのポインタを返すので、あなたは奇妙な結果を得ています。コンパイラがあなたに与えてくれるようなものが何であれ、あなたは今、何をしているのですか? – PaulMcKenzie