したがって、これら2つの関数がref()
ありpointy()
、それぞれローカル参照とローカル定義のintへのポインターを作成します。
#include <iostream>
int& ref() {
int knuckles = 6;
int &chuckles = knuckles;
return chuckles;
};
int* pointy() {
int buckles = 8;
return &buckles;
};
int main(int argc, char **argv) {
int a = ref(), *b = pointy();
int c = 14, d = 20;
std::cout << a << ' ' << *b << ' ' << c+d;
};
コードは正常にコンパイルされ、ローカル変数のアドレスを返すことについて警告が表示されますが、私が懸念しているのは、への参照を返すbuckles
ことについて何も述べていないことです。私のコンパイラ(違いが生じる場合は、MinGW経由のg ++)は仕事で眠っているだけですか?指示対象が範囲外になるのを防ぐ参照について何かありますか?それとも私の参照構文はちょうど悪いですか?ref()
knuckles
とても感謝しております!