質問するログイン新規登録

Q&A

解決済

3回答

1245閲覧

*s とs の使い分け

lawson.aic

総合スコア18

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/09/16 05:17

0

0

*s++,s++,それぞれの使い分けてる意味を知りたいです。

下記は、とある書籍の問題です

これは文字列sに含まれている数文字'0'~'9'の個数を、cnt[0]~cnt[9]に格納する関数です。

void cnt_digit(const char *s, int cnt[])
{
int i;
for (i = 0; i < 10; i++)
*(cnt + i) = 0;

while (*s) {
if (*s >= '0' && *s <= '9')
cnt[*s - '0']++;
s++;
}
}

s++でs[0]からs[1]へずらしていくのは分かりますが、*s++ではいけないのでしょうか?

*s++ = *sの値に1を加える。
s++ = 配列sの要素を1個後方を指すように更新。
・・・?

*s++としても正常に動作しています。

他の例題で、*s++としているケースもあり、それぞれどのような意味で使い分けているのかわからなくなりました。

//文字列sに含まれる文字chを探索
int str _char(const char *s, int ch)
{
int idx = 0;

while (*s) {
if(*s++ == ch)
return idx;
idx++;
}
return -1;
}

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

コメントの取得に失敗しました

回答の取得に失敗しました

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問