掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.30349

配列名に「&演算子」を使うと。。。
投稿者---h3X(2007/06/23 15:59:41)


例えば以下のような宣言をした場合、

int array[10];

配列名「array」は配列の先頭要素「array[0]」のアドレスを保持します。
ここで次のようなプログラムを実行してみました。

#include <stdio.h>

int main(int argc, char **argv)
{
    int array[10];

    printf(" array   :%p\n",  array   );
    printf("&array   :%p\n", &array   );
    printf("&array[0]:%p\n", &array[0]);

    return 0;
}


実行結果は、

array :0xbfe94aa0
&array :0xbfe94aa0
&array[0]:0xbfe94aa0

と全て同じアドレス(配列の先頭要素array[0]のアドレス)が表示されます。

上記プログラムの中で、

printf("&array :%p\n", &array );

は何を出力するのだろう、、、と少し戸惑いました。

配列名に「&演算子」を適用しても、配列の先頭要素のアドレスが得られる
という事を、どのように理解したらよろしいでしょうか?

ご教授よろしくお願い致します。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列名に「&演算子」を使うと。。。 30351 かずま 2007/06/23 16:11:48


No.30351

Re:配列名に「&演算子」を使うと。。。
投稿者---かずま(2007/06/23 16:11:48)


> 配列名に「&演算子」を適用しても、配列の先頭要素のアドレスが得られる
> という事を、どのように理解したらよろしいでしょうか?

配列に「&演算子」を適用すると、配列の先頭要素のアドレスではなく、
配列全体へのポインタが得られます。
    int array[10];
    int *ip;
    int (*ap)[10];
    ip = array;
    ip = &array[0];
    ap = &array;
    printf("ip: %p %p\n", ip, ip+1);
    printf("ap: %p %p\n", ap, ap+1);



この投稿にコメントする

削除パスワード

No.30352

Re:配列名に「&演算子」を使うと。。。
投稿者---h3X(2007/06/23 16:23:45)


ご教授ありがとうございます。

>配列に「&演算子」を適用すると、配列の先頭要素のアドレスではなく、
>配列全体へのポインタが得られます。

そうだったんですか。
これでまた理解が深まりました。ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧