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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 少しの疑問 4 2022/11/08 02:48
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
C言語のchar型配列を計算させる...
-
C言語のintとcharの違いってな...
-
エクセルのMID関数は、C言語では?
-
new charとnew char[N]の違いは?
-
szとlpszの違い
-
char型について【初心者です】
-
文字列strの中から文字cを探す...
-
C# ポインタ アクセス違反
-
DWORDとcharの変換
-
多次元配列のメモリ解放
-
小数点入りの文字列をfloat型に...
-
fread()関数とfwrite()関数につ...
-
char 文字列型 の表現範囲が-12...
-
Run-Timeエラーの原因に関して...
-
fgetc( )の戻り値はなぜ整数??
-
strcat関数を自作したいです
-
文字列の途中から途中までを抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
CStringからchar*への型変換に...
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
文字列内の数字削除
-
char 文字列型 の表現範囲が-12...
-
C++17で、unsigned char * 配列...
-
const char* s1とただのchar s1...
-
char型にint型の数値を代入する。
-
szとlpszの違い
-
wsprintf( ポインタ , "%d" , "...
-
2次元配列の文字"列"の初期化方法
-
DWORDとcharの変換
-
[C] 構造体メンバーのカンマ区...
-
C言語のプログラムについてです
-
SetWindowTextについて。
-
csvファイルをfscanfで読み込む...
-
文字列置換のアルゴリズムを教...
おすすめ情報