ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    ホームページ    使用可能タグ一覧

No.2685

ポインタへのポインタ
投稿者---チェリーC(2004/09/16 12:14:14)


ポインタや配列においてたとえば
char *str,str[10];
としたときにそれぞれ
strはアドレス*strやstr[2]は中身を示すと思うのですが、

ポインタのポインタにおいて
たとえば char **data;としたとき
data,*data,**dataはそれぞれ
何をしめすのでしょうか?

またchar *data2[10]のようなポインタの配列では
data2,*data2,*data2[1],data2[1]
はそれぞれ何を表すのでしょうか?

よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ポインタへのポインタ 2686 nop 2004/09/16 12:25:19
<子記事> Re:ポインタへのポインタ 2688 REE 2004/09/16 13:11:19
<子記事> Re:ポインタへのポインタ 2689 monkey 2004/09/16 13:18:47
<子記事> Re:ポインタへのポインタ 2690 ぽこ 2004/09/16 13:21:55


No.2686

Re:ポインタへのポインタ
投稿者---nop(2004/09/16 12:25:19)


>ポインタや配列においてたとえば
>char *str,str[10];
>としたときにそれぞれ

出来ません。

>strはアドレス*strやstr[2]は中身を示すと思うのですが、

日本語として、意味がわかりません。


この投稿にコメントする

削除パスワード

No.2687

Re:ポインタへのポインタ
投稿者---チェリーC(2004/09/16 12:52:14)


>>ポインタや配列においてたとえば
>>char *str,str[10];
>>としたときにそれぞれ
>
>出来ません。

すみません 
char *str1;
char str2[10];
ということです。

>
>>strはアドレス*strやstr[2]は中身を示すと思うのですが、
>
>日本語として、意味がわかりません。

説明が下手で申し訳ありません。
*str1は変数の中身の値,strは変数の格納されているアドレス
ということです。


この投稿にコメントする

削除パスワード

No.2688

Re:ポインタへのポインタ
投稿者---REE(2004/09/16 13:11:19)


>ポインタのポインタにおいて
>たとえば char **data;としたとき
>data,*data,**dataはそれぞれ
>何をしめすのでしょうか?

それぞれ、以下の型になります。

dataはcharへのポインタへのポインタ
*dataはcharへのポインタ
**dataはchar

具体的に何を指すのかはdataの値によります。


>またchar *data2[10]のようなポインタの配列では
>data2,*data2,*data2[1],data2[1]
>はそれぞれ何を表すのでしょうか?

それぞれ、以下を表します。

data2はcharへのポインタの配列(またはそれへの先頭ポインタ)
*data2はポインタ配列の先頭要素 型:charへのポインタ(この場合、data2[0]と同じ)
*data2[1]はポインタ配列の2番目の要素の指す先 型:char
data2[1]はポインタ配列の2番目の要素 型:charへのポインタ

# 引用部分を一部全角に変更しています


この投稿にコメントする

削除パスワード

No.2689

Re:ポインタへのポインタ
投稿者---monkey(2004/09/16 13:18:47)


ポインタの機構自体は難しくないのですが、分かりやすく説明するのが難しいんですよね。
実際のコードで体得するのが一番だと思います。
例えば、次のコードと実行結果をじっくり吟味してみてください。

#include <stdio.h>
int main()
{
    char   c  = 'x';
    char*  p  = &c;
    char** pp = &p;

    printf( "pp = %p, p = %p, c = %c\n", pp, *pp, **pp );
    printf( "pp = %p, p = %p, c = %c\n", pp,   p,   *p );
    printf( "pp = %p, p = %p, c = %c\n", pp,   p,    c );
    return 0;
}



この投稿にコメントする

削除パスワード

No.2690

Re:ポインタへのポインタ
投稿者---ぽこ(2004/09/16 13:21:55)


>ポインタのポインタにおいて
>たとえば char **data;としたとき
>data,*data,**dataはそれぞれ
>何をしめすのでしょうか?

dataはポインタ(char**型)で、*dataもポインタ(cahr*型)で**dataはchar型の値です。
ポインタのポインタも所詮ポインタです。
指しているところに格納されている値が何かのポインタ型なだけです。



この投稿にコメントする

削除パスワード

No.2692

Re:ポインタへのポインタ
投稿者---チェリーC(2004/09/17 13:31:57)


いろいろと皆さんありがとうございました。
なんとなく理解することができました。
自分でももうちょっと頑張って勉強してみます。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    ホームページ    レンタル掲示板サービス




掲示板提供:Real Integrity