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

”PIC16F1”/*****************************
* 文字列表示関数
*****************************/
void lcd_str(const unsigned char* ptr)
{
while(*ptr != 0) //文字取り出し
lcd_data(*ptr++); //文字表示
}
ptr : 文字配列のポインタ、文字列直接記述はWarning

本を購入して Cプログラム及びPICについて独学し始めたところです。
LCDライブラリに上記の関数があります。
ここで char* ptr  の意味が分かりません。
ポインタであれば char *ptr と記述されるのではないでしょうか?
”C入門”を購入して調べましたがこのような記述が見当たりません。
宜しくお願いします。

A 回答 (3件)

多くの言語では「『構成要素』が区別できるなら空白はあってもなくてもいい」というルールがある. で, ここだと


const unsigned char*ptr
となっているけど, これは
「const」「unsigned」「char」「*」「ptr」
の 5つの「構成要素」からなるので, これがきちんと区別できればいい. これが
constunsignedchar *ptr
だと
「constunsignedchar」「*」「ptr」
となってしまうからアウトなわけだ.

ちなみに
unsigned char const *ptr
でもよかったりする.
    • good
    • 0
この回答へのお礼

ありがとうございました。
ネットで調べたら出てきました。
勉強始めたばかりの私には難しい内容でしたが おっしゃる通り 要は 構成要素 が区別できれば良いということのようです。
趣味で勉強しているのでこういう記述もできる程度で覚えておきます。
ありがとうございました。

お礼日時:2019/02/16 09:55

>どちらでも良いとは驚きです。


さらに言ってしまうと
char * ptr
でも
char*ptr
でも問題がないんです

>その旨が明示されていてもよさそうな気がしますがこういうもんだと思うしかないんでしょうね。
そうですね、だから書き手によってぶれてしまう部分になりますので
そういうのは基本的に会社やプロジェクト単位で「コーディング規約」というものが決められています
それを決めることで誰が書いても同じ記述になるようにしています
    • good
    • 0
この回答へのお礼

ありがとうございます。
ネットで再度調べたら出てきました。説明内容は難しくて理解できませんでしたが初級者泣かせの構文のようです。
tacosan さんのおっしゃるように構成要素が区別できればよさそうです。
趣味で勉強しているのでこういう記述もできる程度で覚えておきます。
ありがとうございました。

お礼日時:2019/02/16 09:47

>ポインタであれば char *ptr と記述されるのではないでしょうか?


どちらの記述でも問題ありません

char* ptr
でも
char *ptr
でも意味は同じです

ちなみに私は前者派です
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。
どちらでも良いとは驚きです。
記述方法にその旨が明示されていてもよさそうな気がしますがこういうもんだと思うしかないんでしょうね。

お礼日時:2019/02/15 14:48

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