• 締切済み

C言語の型キャスト

C言語入門者です、よろしくお願いします C言語の型キャストについて教えてください 参考サイトで以下のようになってました char str[8] = "ABC"; char *ptr; ptr = (char*)str; printf("char型ポインタのアドレス先の値は: %s\n", ptr); この型キャストって意味ありますか? キャストしようがしなかろうがptrに収まるのはstrの先頭アドレスですよね? ただ型キャストを説明するためだけにこのような形にしているのか 意味がある型キャストなのかが解らず迷ってます

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.7

念のためもう1回回答しますね。 >この型キャストって意味ありますか? くだんのコードにおいては ptr = str; と書いても ptr = (char *) str; と書いても「意味は同じ」。 よって、当方ならば、少しでも打鍵量が少ない方を選ぶ。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.6

#1です。 >配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違いということなのですね キャストする意味がないのと、 その理由は書いていますけど、 「配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違い」なんて事は一言も書いていないのですが・・・

  • watanabe04
  • ベストアンサー率18% (295/1598)
回答No.5

int inta = 8; int *ptri; ptri = (int*)inta; printf("int型ポインタのアドレス先の値は: %d\n", ptri); こうすれば8が出てきます。 ポインターは先頭アドレスですが、 int型であればint型の長さ(バイト数)でキャストしているから 8を出すことが可能なのです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

ていうか、キャストをはずして 同じ結果になるかどうかくらい 自分でできるでしょ?

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

そのキャストは、なくていいですよ。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>キャストしようがしなかろうがptrに収まるのはstrの先頭アドレスですよね? 意味はないです。 理由は「キャストしようがしなかろうがptrに収まるのはstrの先頭アドレス」だからではなく、strを評価して得られる値の型は char * だからですけど。

noisuke17
質問者

お礼

配列は先頭アドレスと教えているサイトしか見ないけどその説明は間違いということなのですね

関連するQ&A

専門家に質問してみよう