OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

char *str; と char* str;

  • 暇なときにでも
  • 質問No.180558
  • 閲覧数855
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 59% (194/328)

char *str; と char* str;
どっちも同じことを意味しているんですか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル14

ベストアンサー率 50% (1122/2211)

同じことを指している、というのは、先の回答の通りです。

また、ひとつの宣言で変数を複数宣言したときに、char* str という表記は間違い
易いじゃないか、ということが言われているのも事実です。実際、いろいろな C のソースを
見ていても、まずアスタリスクを型につけて書くのは、まずお目にかかれません。

ただ C++ では、char* str という宣言も良く使われています。

C++ に限らずオブジェクト指向の言語は、強く型を意識するので、「文字のポインタ型」と
いう意味で、まとめて書く方が馴染むのでしょう。ちなみにそういう風な人たちは

char *str1, *str2;

とは、書けない体になっています。

char* str1;
char* str2;


変数の宣言だと、C に慣れていれば、char* str というのはちょっと違和感があるのは
私も分かりますが、関数のプロトタイプ宣言だと、どちらの方がすっきりしますか?

extern char *memcpy(char *, const char *);

extern char* memcpy(char*, const char*);


# まあ、どっちが正しい、っていうんじゃ無いんですよね
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
extern char *memcpy(char *, const char *);
といような書式は初めて見ました。
投稿日時 - 2001-12-06 22:40:39
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 40% (237/589)

文法的には、どっちも同じです。 ただし、書法としては、char* str; と書くのは良くありません。 char *str; と書くよう、習慣づけて下さい。 なぜ char* str; は良くないのか? 例えば、char* str, str2; というコードで考えてみて下さい。 str は char * 型、str2 は char 型ですが、このように書かれていると、いかにも両方が cha ...続きを読む
文法的には、どっちも同じです。
ただし、書法としては、char* str; と書くのは良くありません。
char *str; と書くよう、習慣づけて下さい。

なぜ char* str; は良くないのか?
例えば、char* str, str2; というコードで考えてみて下さい。
str は char * 型、str2 は char 型ですが、このように書かれていると、いかにも両方が char * 型であるかのように見えませんか?

こういう誤解を招かないようにするため、char *str; と書くべきです。
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
char *str; と char* str; の違いが分からないから、
もしかしたら同じかなと思っていたら、同じだったんですね。
投稿日時 - 2001-12-06 22:38:25


  • 回答No.2
レベル9

ベストアンサー率 67% (36/53)

両者とも「char型のポインタ変数であるstrを宣言する」という意味ですが、ANSI(米国国内情報システム標準規格)では「char *str;」といった表記を推奨しています。 #「char * str;」という表記でもOK。 以下のような変数の宣言を行うと、異なったものになります。 char *str1, *str2; /* str1、str2はともにchar型のポインタ変数 */ char* ...続きを読む
両者とも「char型のポインタ変数であるstrを宣言する」という意味ですが、ANSI(米国国内情報システム標準規格)では「char *str;」といった表記を推奨しています。
#「char * str;」という表記でもOK。
以下のような変数の宣言を行うと、異なったものになります。
char *str1, *str2; /* str1、str2はともにchar型のポインタ変数 */
char* str1, str2; /* str1はchar型のポインタ変数、str2はchar型の変数 */
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
同じ意味だけど、char *str; の方が良いことが分かりました。
投稿日時 - 2001-12-06 22:39:41
このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ