※ ChatGPTを利用し、要約された質問です(原文:「*」←この記号はなに?【C言語】)
【C言語】「*」の意味とは?
このQ&Aのポイント
C言語の関数における「*」の意味について説明します。ウィキペディアなどで関数のページを見ると「*」が形式の部分で使われていることがありますが、実際にはポインタではありません。
例えば、gets関数を使う場合には、引数として文字列を表すchar型のポインタを渡しますが、関数の宣言では「char *gets(char *s)」となっています。ただし、実際にソースコードで使う際にはポインタを省略して書くことができます。
したがって、「*」が関数の宣言に現れる場合でも、実際にはポインタとは異なる意味を持ちます。具体的な意味は関数ごとに異なるので、関数のドキュメントやリファレンスを参照することをおすすめします。
http://ja.wikipedia.org/wiki/Gets
このページなど、ウィキペディアなどでC言語の関数のページ(getsとかfopenとかなんでも)を見ると、形式の部分で
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: char *gets(char *s) ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
↑このように*が入って説明されているじゃないですか。*はポインタの前につけるんですよね?でもgetsはポインタじゃないです。
ソースコードの例でも、
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: char a[10]; ::
:: gets(a); ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
↑のように*は省かれています。
このような「*」は一体何を意味するんでしょう?
回答よろしくお願いします。
お礼
おぉなるほど~!戻り値ですね!あれ関数値とも言うんですね。関数の戻り値を変数に入れられるって初めて知りました。超初心者なんで・・(汗) その後ネットで詳しく調べてみたのですが、 【例文】 :::::::FILE *fp; :::::::if ((fp = fopen("test.txt", "mode")) == NULL) {…} 1.FILEはFILE構造体の事である。FILE構造体とは、今どこを読み書きしているか等FILEを読み書きする為に必要な変数(色んな型)を持っている構造体である。 詳しくはhttp://www.geocities.co.jp/SiliconValley-Bay/7437/c/file.htmを見てほしい。 2.*fpはファイル構造体を参照するためのポインタ(アドレス、住所)を入れる為のポインタ変数。 3.fopenなどのファイルアクセス関数は、test.txt(※1)とmode(※2)によってFILE構造体を展開し、その結果(戻り値)としてFILE構造体のポインタをfpに代入する。 4.後はfpを駆使してファイルを読み込んだり、ファイルに書き込んだりする。 ※1操作するファイルのパス。絶対パスでも相対パスでもOK。 ※2読むだけ、書くだけ、読み書きするだけなどを指定する。r,w,a等がある。バイナリファイルの場合は↓のURLを参照。 http://www.geocities.jp/ky_webid/c/037.html ということでした。よく理解できました。質問して良かった。