char *str; と char* str;
char *str; と char* str;
どっちも同じことを意味しているんですか?
回答(3件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.3ベストアンサー20pt
同じことを指している、というのは、先の回答の通りです。
また、ひとつの宣言で変数を複数宣言したときに、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*);
# まあ、どっちが正しい、っていうんじゃ無いんですよね
この回答へのお礼
ありがとうございます。
extern char *memcpy(char *, const char *);
といような書式は初めて見ました。
両者とも「char型のポインタ変数であるstrを宣言する」という意味ですが、ANSI(米国国内情報システム標準規格)では「char *str;」といった表記を推奨しています。
#「char * str;」という表記でもOK。
以下のような変数の宣言を行うと、異なったものになります。
char *str1, *str2; /* str1、str2はともにchar型のポインタ変数 */
char* str1, str2; /* str1はchar型のポインタ変数、str2はchar型の変数 */
この回答へのお礼
ありがとうございます。
同じ意味だけど、char *str; の方が良いことが分かりました。
No.1ベストアンサー10pt
文法的には、どっちも同じです。
ただし、書法としては、char* str; と書くのは良くありません。
char *str; と書くよう、習慣づけて下さい。
なぜ char* str; は良くないのか?
例えば、char* str, str2; というコードで考えてみて下さい。
str は char * 型、str2 は char 型ですが、このように書かれていると、いかにも両方が char * 型であるかのように見えませんか?
こういう誤解を招かないようにするため、char *str; と書くべきです。
この回答へのお礼
ありがとうございます。
char *str; と char* str; の違いが分からないから、
もしかしたら同じかなと思っていたら、同じだったんですね。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











