プロが教える店舗&オフィスのセキュリティ対策術

char *str; と char* str;
どっちも同じことを意味しているんですか?

A 回答 (3件)

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



また、ひとつの宣言で変数を複数宣言したときに、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*);


# まあ、どっちが正しい、っていうんじゃ無いんですよね
    • good
    • 0
この回答へのお礼

ありがとうございます。
extern char *memcpy(char *, const char *);
といような書式は初めて見ました。

お礼日時:2001/12/06 22:40

両者とも「char型のポインタ変数であるstrを宣言する」という意味ですが、ANSI(米国国内情報システム標準規格)では「char *str;」といった表記を推奨しています。


#「char * str;」という表記でもOK。
以下のような変数の宣言を行うと、異なったものになります。
char *str1, *str2; /* str1、str2はともにchar型のポインタ変数 */
char* str1, str2; /* str1はchar型のポインタ変数、str2はchar型の変数 */
    • good
    • 0
この回答へのお礼

ありがとうございます。
同じ意味だけど、char *str; の方が良いことが分かりました。

お礼日時:2001/12/06 22:39

文法的には、どっちも同じです。


ただし、書法としては、char* str; と書くのは良くありません。
char *str; と書くよう、習慣づけて下さい。

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

こういう誤解を招かないようにするため、char *str; と書くべきです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
char *str; と char* str; の違いが分からないから、
もしかしたら同じかなと思っていたら、同じだったんですね。

お礼日時:2001/12/06 22:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!