質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.49%

  • C

    3707questions

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

for文の条件式でのポインタの意味

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 145

bunkyu

score 3

 前提・実現したいこと

c言語の勉強をしています。
知らない文法を用いた記述あり、理解ができません。

 発生している問題・エラーメッセージ

for文の条件文の *s はどのような意味があるのでしょうか。
通常条件文には比較するための演算子が含まれてると思うのですが、それがないため躓いています。

 該当のソースコード

int strlen(const char *s)
{
    int len;
    for (len = 0; *s; s++, len++)
        ;
    return len;
}

 試したこと

 補足情報(FW/ツールのバージョンなど)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

通常条件文には比較するための演算子が含まれてると思うのですが、それがないため躓いています。

こんなコードは見たことがないでしょうか。

// 無限ループ
while(1) {
    ...
}

この場合、真値として1を用いていて、ループが無限に続きます。

比較演算子を用いる際も、あくまでその比較結果に意味があるわけです。
かならず条件式に含まれるとは限りません。


for文の条件文の *s はどのような意味があるのでしょうか。

現在、ポインタsが指している値を参照しています。
*sが偽値になるのは参照先の値が0のとき、ヌル終端文字列におけるヌル文字です。

結局、ご提示のfor文は、文字列の末尾までポインタを進めていくわけです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/08 22:19

    理解できました。
    丁寧なご回答ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    メソッドの問題で解けない問題があります。どうか教えていただけませんか?

    前提・実現したいこと //この問題を解いていますが、行き詰まりました。 //どのように考えどのように解くのかを教えていただけませんか? 発生している問題・エラーメッ

  • 解決済

    unityで隠しコマンド的なものを導入したいです。

    前提・実現したいこと unityで簡単なゲームをつくっています。 その中で、指定したコマンドを入力したら、シーン切り替えをするという動作をさせたいのですが、コードの書き方がわか

  • 解決済

    文字列のプログラムについて

    Cを使って3つの文字列を入力し一番文字数が最多の文字列を出力する(ただし最多の数と同じ数の文字列がある場合同じ数の文字列をすべて出力) というプログラムを作っているのですが今文字数

  • 解決済

    c言語学習中の学生です。

    前提・実現したいこと c言語を学んでいる学生です。 非常に低レベルな質問ですがお願いします。 Windows10でmingwを使っています。 発生している問題・エラーメッセージ

  • 解決済

    10 * 10の2次元配列を矩形で4分割したい

     実現したいこと list()の2次元配列を用いて、RPGのワールドマップを表現しようとしています。2次元配列の中身は数値です。 草原=0 村 = 1  道 = 10

  • 受付中

    素のJSで,要素を挿入

    素のJSで複数要素を挿入したい --- やりたいこと --- あるcssクラスの1番目の子孫要素を取得して, あるcssクラスの2番目以降の要素にコピーしたい --- 試し

  • 解決済

    再帰を使わずに再帰のようなことを実現したい

    [1,1,1,1,1] [1,1,1,1,2] ... [1,1,1,1,9] [1,1,1,2,2] [1,1,1,2,3] ... [8,9,9,9,9] [9,9,9,9,9

  • 解決済

    シェルソート(降順)の作成

    シェルソート(降順)でソートした数の 先頭5個と末尾5個を表示したいのですが望むような結果になりません。 ご指摘お願いします。 データ数=5 1 5 3 4 2 1,5,3,4

同じタグがついた質問を見る

  • C

    3707questions

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