No.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*);
# まあ、どっちが正しい、っていうんじゃ無いんですよね
この回答へのお礼
お礼日時:2001/12/06 22:40
ありがとうございます。
extern char *memcpy(char *, const char *);
といような書式は初めて見ました。
No.2
- 回答日時:
両者とも「char型のポインタ変数であるstrを宣言する」という意味ですが、ANSI(米国国内情報システム標準規格)では「char *str;」といった表記を推奨しています。
#「char * str;」という表記でもOK。
以下のような変数の宣言を行うと、異なったものになります。
char *str1, *str2; /* str1、str2はともにchar型のポインタ変数 */
char* str1, str2; /* str1はchar型のポインタ変数、str2はchar型の変数 */
No.1
- 回答日時:
文法的には、どっちも同じです。
ただし、書法としては、char* str; と書くのは良くありません。
char *str; と書くよう、習慣づけて下さい。
なぜ char* str; は良くないのか?
例えば、char* str, str2; というコードで考えてみて下さい。
str は char * 型、str2 は char 型ですが、このように書かれていると、いかにも両方が char * 型であるかのように見えませんか?
こういう誤解を招かないようにするため、char *str; と書くべきです。
この回答へのお礼
お礼日時:2001/12/06 22:38
ありがとうございます。
char *str; と char* str; の違いが分からないから、
もしかしたら同じかなと思っていたら、同じだったんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数内で設定したポインタ値に...
-
メモリ関連のエラーを取り除く...
-
C++Builder 2009 テキスト...
-
strcat関数を自作したいです
-
別ファイルの内容を検索したい...
-
char*を初期化したいのですが
-
ASCIIコードへの変換方法
-
char型にint型の数値を代入する。
-
ポインタで詰まりました;
-
C++のnewで確保したメモリーの...
-
VB.NETでファイル名順にファイ...
-
C言語 構造体の中に共用体を定...
-
関数から配列を返すには?
-
C言語のポインタに直接アドレス...
-
malloc呼び出し時のセグメンテ...
-
C言語 配列の長さの上限
-
構造体配列のソート
-
C言語の文字列?処理 strcpyやl...
-
C#で構造体の配列を持った構造...
-
2次元配列を戻り値とする関数?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
fstream型オブジェクトを関数の...
-
小数点入りの文字列をfloat型に...
-
char型にint型の数値を代入する。
-
const char* s1とただのchar s1...
-
new charとnew char[N]の違いは?
-
動的メモリの初期化方法について。
-
エクセルのMID関数は、C言語では?
-
C言語 strstrの実装
-
SetWindowTextについて。
-
char 文字列型 の表現範囲が-12...
-
文字列の途中から途中までを抽出
-
2次元配列の文字"列"の初期化方法
-
DWORDとcharの変換
-
C++17で、unsigned char * 配列...
-
C言語の文字リテラル中の16進文...
-
strcat関数を自作したいです
おすすめ情報