ホームページ > バックエンド開発 > C++ > `t`、`&t[0]`、および `t` へのポインタが同じアドレスを持つのはなぜですか?

`t`、`&t[0]`、および `t` へのポインタが同じアドレスを持つのはなぜですか?

Susan Sarandon
リリース: 2024-11-26 08:12:09
オリジナル
138 人が閲覧しました

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

ポインタに変換された t、&t[0]、および t のアドレスが同じである理由

配列はメモリの連続したブロックです同じデータ型の要素が含まれています。配列を宣言すると、コンパイラはメモリのブロックを割り当て、そのブロック内の各要素へのポインタを作成します。

ケース 1: t および &t[0]

t を単独で (添字なしで) 使用すると、配列からポインターへの変換が行われ、配列の最初の要素へのポインターが生成されます。この動作は、最初の要素のアドレスを明示的に返す &t[0] を使用するのと同じです。したがって、t と &t[0] は同じ値になります。

ケース 2: &t

ただし、& 演算子を t に適用すると、同じ値にはなりません。配列からポインターへの変換をトリガーします。代わりに、&t は t 自体のアドレスを直接取得し、その結果、配列全体へのポインターが生成されます。

メモリ内では、配列の最初の要素と配列の先頭は同じ場所に存在します。したがって、ポインター t、&t[0]、および u (t へのポインター) はすべて同じアドレスを持ちます。

出力の説明:

指定されたコードはこれを示しています動作:

int t[10];
int * u = t;

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
ログイン後にコピー

出力:

0045FB88 0045FB88
0045FB88 0045FB7C
ログイン後にコピー

出力は、t、&t[0]、および u が同じ値 (0045FB88) を持っていることを示し、ポインターとしての等価性を確認します。

以上が`t`、`&t[0]`、および `t` へのポインタが同じアドレスを持つのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート