- 締切済み
C言語の型キャスト
C言語入門者です、よろしくお願いします C言語の型キャストについて教えてください 参考サイトで以下のようになってました char str[8] = "ABC"; char *ptr; ptr = (char*)str; printf("char型ポインタのアドレス先の値は: %s\n", ptr); この型キャストって意味ありますか? キャストしようがしなかろうがptrに収まるのはstrの先頭アドレスですよね? ただ型キャストを説明するためだけにこのような形にしているのか 意味がある型キャストなのかが解らず迷ってます
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
念のためもう1回回答しますね。 >この型キャストって意味ありますか? くだんのコードにおいては ptr = str; と書いても ptr = (char *) str; と書いても「意味は同じ」。 よって、当方ならば、少しでも打鍵量が少ない方を選ぶ。
- wormhole
- ベストアンサー率28% (1626/5665)
#1です。 >配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違いということなのですね キャストする意味がないのと、 その理由は書いていますけど、 「配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違い」なんて事は一言も書いていないのですが・・・
- watanabe04
- ベストアンサー率18% (295/1598)
int inta = 8; int *ptri; ptri = (int*)inta; printf("int型ポインタのアドレス先の値は: %d\n", ptri); こうすれば8が出てきます。 ポインターは先頭アドレスですが、 int型であればint型の長さ(バイト数)でキャストしているから 8を出すことが可能なのです。
- asuncion
- ベストアンサー率33% (2127/6289)
ていうか、キャストをはずして 同じ結果になるかどうかくらい 自分でできるでしょ?
- asuncion
- ベストアンサー率33% (2127/6289)
そのキャストは、なくていいですよ。
- wormhole
- ベストアンサー率28% (1626/5665)
>キャストしようがしなかろうがptrに収まるのはstrの先頭アドレスですよね? 意味はないです。 理由は「キャストしようがしなかろうがptrに収まるのはstrの先頭アドレス」だからではなく、strを評価して得られる値の型は char * だからですけど。
お礼
配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違いということなのですね