<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devkuma – C</title>
    <link>https://www.devkuma.com/jp/tags/c/</link>
    <image>
      <url>https://www.devkuma.com/jp/tags/c/logo/180x180.jpg</url>
      <title>C</title>
      <link>https://www.devkuma.com/jp/tags/c/</link>
    </image>
    <description>Recent content in C on devkuma</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>jp</language>
    <managingEditor>kc@example.com (kc kim)</managingEditor>
    <webMaster>kc@example.com (kc kim)</webMaster>
    <copyright>The devkuma</copyright>
    
	  <atom:link href="https://www.devkuma.com/jp/tags/c/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>C 言語 | コンピュータシステム開発</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%BB%B4%ED%93%A8%ED%84%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%B0%9C/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%BB%B4%ED%93%A8%ED%84%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%B0%9C/</guid>
      <description>
        
        
        
      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | コンピュータシステム開発 | プログラムの構造</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%98-%EA%B5%AC%EC%A1%B0/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%98-%EA%B5%AC%EC%A1%B0/</guid>
      <description>
        
        
        &lt;p&gt;プログラムが動作する仕組みと、アプリケーションやオペレーティングシステムなどのソフトウェアの種類について説明する。&lt;/p&gt;
&lt;h2 id=&#34;ソフトウェアとプログラミング&#34;&gt;ソフトウェアとプログラミング&lt;/h2&gt;
&lt;p&gt;C 言語以外のプログラミング経験があり、プログラムが何であるかを理解している場合は、この項目を読み飛ばしてもよい。&lt;/p&gt;
&lt;p&gt;コンピューターのシステムはそれぞれ異なるが、すべてのコンピューターはソフトウェアと呼ばれる論理的な情報によって動いている。ソフトウェアとは、コンピューターが実行すべき処理手順や情報を記録したプログラムである。コンピューターが起動すると、プログラムが CPU に読み込まれ、決められた手順に従って電源が切れるまで実行される。コンピューターはソフトウェアなしでは動作できない。&lt;/p&gt;
&lt;p&gt;CPU が読み取って処理するプログラムは、機械語と呼ばれる数値だけで表現されたデータで構成されている。それぞれの数値には CPU が定めた意味が割り当てられている。CPU は命令を読み込み、解釈し、実行する。次に読み込む命令の位置を判断して取得する動作をフェッチ（fetch）と呼ぶ。フェッチサイクルと命令実行サイクルを繰り返すことで、プログラムが動作する。&lt;/p&gt;
&lt;p&gt;ただし、プログラマーが作成するソフトウェアの多くは、コンピューターの電源を入れた直後から動作するものではない。アプリケーションはアプリケーションソフトウェア、またはアプリケーションプログラムとも呼ばれ、業務処理など特定の目的のために作られたソフトウェアを指す。それでは、アプリケーションソフトウェアを実行できる状態になるまでに、どのような処理が行われるのだろうか。&lt;/p&gt;
&lt;p&gt;コンピューターの電源を入れると、最初に決められたプログラムが実行される。ハードウェアの初期化が完了すると、指定された記憶装置からプログラムを読み込む。この一連の動作を起動、またはブートと呼ぶ。ブート処理の詳細を知る必要があるプログラマーはごく一部である。&lt;/p&gt;
&lt;p&gt;ブート処理が完了すると、オペレーティングシステムが起動する。オペレーティングシステムは、物理的なコンピューターの制御、システム管理、基本的な作業環境を提供するソフトウェアであり、基本ソフトウェアとも呼ばれる。オペレーティングシステムがなければコンピューターを利用できない。代表的なオペレーティングシステムには Microsoft Windows、Solaris、HP-UX、OS/2、Linux などがある。&lt;/p&gt;
&lt;p&gt;私たちが作るソフトウェアは、オペレーティングシステムを基盤として動作する。オペレーティングシステムもプログラムであるため、個人で作成することもできるが、それには相応の開発経験と、情報科学やシステムに関する高度な知識が必要である。一方、アプリケーションソフトウェアはオペレーティングシステム上で実行されるため、通常はハードウェアの詳細な知識を必要としない。オペレーティングシステムが提供する機能を使うことで、目的のプログラムを効率よく構築できる。&lt;/p&gt;
&lt;p&gt;業務アプリケーション、ゲームソフト、さらにはウイルスも、何らかの基本ソフトウェア上で動作するアプリケーションソフトウェアである。&lt;/p&gt;
&lt;p&gt;この本では「システム」という言葉を頻繁に使う。これは単にオペレーティングシステムを略したものではなく、ハードウェアとソフトウェアで構成される情報処理環境全体を意味する。たとえば、オペレーティングシステムのように動作する大規模なアプリケーションを動かすため、中間言語のようなデータを生成する目的で C 言語が使われることもある。C 言語の動作対象は必ずしもオペレーティングシステムとは限らないため、この本では抽象的な表現である「システム」を使用する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | コンピュータシステム開発 | ハードウェア構成</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EA%B5%AC%EC%84%B1/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EA%B5%AC%EC%84%B1/</guid>
      <description>
        
        
        &lt;p&gt;標準的なコンピューターのハードウェア構成と、その関係について説明する。&lt;/p&gt;
&lt;h2 id=&#34;コンピューターの構造&#34;&gt;コンピューターの構造&lt;/h2&gt;
&lt;p&gt;ほかのプログラミング言語の経験やコンピューターを組み立てた経験があり、ハードウェアを理解している場合は、開発環境とコンパイラーの記事まで読み飛ばしてもよい。&lt;/p&gt;
&lt;p&gt;C 言語は高級言語である一方、低級言語に近い言語でもある。そのため、C 言語を使いこなすにはコンピューターに関する知識が必要である。ここでは、コンピューターシステムの基本を説明する。&lt;/p&gt;
&lt;p&gt;コンピューターはデータを入力し、適切な方法で計算して結果を出力する道具である。この処理に必要な最小限の装置は、入力装置、出力装置、演算装置、制御装置、記憶装置の 5 つである。&lt;/p&gt;
&lt;h3 id=&#34;表-1-コンピューターの-5-大要素&#34;&gt;表 1. コンピューターの 5 大要素&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;装置&lt;/th&gt;
          &lt;th&gt;説明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;入力装置&lt;/td&gt;
          &lt;td&gt;コンピューターにデータを送る装置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;出力装置&lt;/td&gt;
          &lt;td&gt;計算結果を出力する装置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;演算装置&lt;/td&gt;
          &lt;td&gt;プログラムに従ってデータを計算する装置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;制御装置&lt;/td&gt;
          &lt;td&gt;ほかの装置の動作を制御する装置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;記憶装置&lt;/td&gt;
          &lt;td&gt;データを保存する装置&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;図-1-コンピューターの-5-大要素と関係&#34;&gt;図 1. コンピューターの 5 大要素と関係&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/c/5.jpg&#34; alt=&#34;コンピューターの 5 大要素と関係&#34;&gt;&lt;/p&gt;
&lt;p&gt;入力装置には、キーボード、マウスやペン、タッチスクリーンなどのポインティングデバイス、スキャナー、OMR、タイマーなどがある。代表的な出力装置はディスプレイだが、プリンターやプロッターなどもある。&lt;/p&gt;
&lt;p&gt;演算装置と制御装置を合わせたものを中央処理装置、つまり CPU と呼ぶ。CPU は入出力を管理し、コンピューター全体を制御する。&lt;/p&gt;
&lt;p&gt;記憶装置は、データや計算結果を保存する。CPU と直接接続された重要な記憶装置を主記憶装置と呼ぶ。プログラムは主記憶装置にデータや計算結果を保存する。ハードディスクや ROM など、ほかの記憶装置は補助記憶装置と呼ぶ。主記憶装置は電源を切るとデータが消えるが、高速にアクセスできる。補助記憶装置は電源を切ってもデータを保持できるが、アクセス速度は遅い。&lt;/p&gt;
&lt;p&gt;記憶装置にはバイナリーデータが保存される。2 進数の 1 桁をビットと呼ぶが、CPU は一般により大きな単位で処理する。最小の処理単位をバイトと呼び、通常は 1 バイトを 8 ビットとして扱う。&lt;/p&gt;
&lt;p&gt;厳密には、1 バイトが常に 8 ビットとは限らない。バイトのサイズはコンピューターアーキテクチャによって異なる。8 ビットを明確に示す単位として、ネットワーク分野ではオクテットを使う。この本では原則として 1 バイトを 8 ビットとして扱う。&lt;/p&gt;
&lt;p&gt;記憶装置では、各バイトにアドレスが割り当てられる。この数値をメモリーアドレスと呼ぶ。プログラムはメモリーアドレスを使って情報にアクセスする。この考え方は C 言語のポインターで重要になる。コンピューターが処理するすべてのデータには、その位置を識別するアドレスがあることを覚えておこう。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | C 言語入門</title>
      <link>https://www.devkuma.com/jp/docs/c/c-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/c-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8/</guid>
      <description>
        
        
        
      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | C 言語入門 | 開発環境とコンパイラー</title>
      <link>https://www.devkuma.com/jp/docs/c/%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EB%B0%8F-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EB%B0%8F-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC/</guid>
      <description>
        
        
        &lt;p&gt;C 言語でプログラミングするために必要なツールの構成と開発環境について説明する。&lt;/p&gt;
&lt;h2 id=&#34;プログラミングに必要なもの&#34;&gt;プログラミングに必要なもの&lt;/h2&gt;
&lt;p&gt;どのような作業にも必要な道具がある。漫画を描くには原稿用紙、インク、ペン、定規、鉛筆、消しゴム、スクリーントーンが必要である。音楽を演奏するには、楽器だけでなく楽譜、譜面台、練習用のチューナー、メトロノームなども必要だろう。プログラミングも同じで、コンピューターだけがあればよいわけではない。質の高いプログラムを効率よく作るには、高度な開発環境が必要である。開発環境とは、プログラムを作るためのプログラムである。エラーを見つけるデバッガー、プログラムを書くためのエディター、開発工程を自動化する CASE ツールなどがある。これらの開発環境もプログラムで作られているため、自作することも不可能ではない。ここでは C 言語の開発に必要な基本情報を紹介する。&lt;/p&gt;
&lt;p&gt;C 言語では、ソースプログラムをオブジェクトプログラムに変換し、その後で実行可能な形式にまとめて実行する。ソースプログラムをオブジェクトプログラムに変換する作業をコンパイルと呼び、そのためのソフトウェアをコンパイラーと呼ぶ。C 言語で書いたソースを実行するにはコンパイラーが必要である。一般的な開発手順では、テキストエディターでソースプログラムを書き、コンパイラーでオブジェクトプログラムに変換する。最後にリンカーというソフトウェアで必要なオブジェクトプログラムを結合し、実行ファイルを作成する。通常、リンカーなどの実行ファイル作成に必要なツールはコンパイラーに含まれている。&lt;/p&gt;
&lt;h3 id=&#34;図-1-プログラム作成の流れ&#34;&gt;図 1. プログラム作成の流れ&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/c/flow.png&#34; alt=&#34;プログラム作成の流れ&#34;&gt;&lt;/p&gt;
&lt;p&gt;コンパイラーを入手する方法はいくつかある。Windows を使う初心者であれば、Microsoft Visual C++ のような統合開発環境を利用するとよい。統合開発環境には、エディター、コンパイラー、ドキュメント、グラフィカルなソフトウェアを開発するための機能などがそろっている。C 言語のプログラムを書き、ボタンを押すだけでコンパイル、リンク、実行まで行えるため、初心者にも扱いやすく、本格的な開発にも利用できる。&lt;/p&gt;
&lt;p&gt;インターネットで無料配布されているコンパイラーもある。たとえば、Embarcadero 社が提供していた Borland C++ Compiler などである。これは個人の開発や学習用に公開されていたコンパイラーであり、保証はないものの自由にインストールできた。ただし統合開発環境ではないため、コマンドラインから操作する必要がある。&lt;/p&gt;
&lt;p&gt;テキストエディターで作成した C 言語のプログラムをコンパイルして実行する方法は、コンパイラーによって異なる。一般に、C 言語のソースファイルには &lt;code&gt;.C&lt;/code&gt; 拡張子を使う。C 言語を発展させたオブジェクト指向言語である C++ のソースファイルには &lt;code&gt;.CPP&lt;/code&gt; 拡張子を使う。&lt;/p&gt;
&lt;p&gt;Microsoft Visual C++ や Borland C++ Compiler は C++ コンパイラーだが、C++ は C 言語と互換性があるため、C 言語のプログラムもコンパイルできる。C 言語としてコンパイルするには &lt;code&gt;.C&lt;/code&gt; 拡張子を使う必要がある。&lt;code&gt;.CPP&lt;/code&gt; 拡張子を使うと C++ としてコンパイルされるため、場合によってはエラーになる。拡張子にかかわらず、オプションで言語を指定できるコンパイラーもある。詳細はコンパイラーに付属する説明書を参照してほしい。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | C 言語入門 | コメント</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%A3%BC%EC%84%9D-comment/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%A3%BC%EC%84%9D-comment/</guid>
      <description>
        
        
        &lt;p&gt;コメント（comment）を使うと、ソースコードにメモを残せる。コメントはコンパイル時に無視されるため、プログラムの動作には影響しない。&lt;/p&gt;
&lt;h2 id=&#34;後で読み返すために&#34;&gt;後で読み返すために&lt;/h2&gt;
&lt;p&gt;この本の C 言語サンプルプログラムは、長くても数十行程度である。各章で扱う重要な機能の仕組みを十分に学べるように、ソースコードをできるだけ単純な形にまとめ、不要な内容を極力含めていないためである。&lt;/p&gt;
&lt;p&gt;しかし、実際の開発現場にあるコードは少なくとも数千行、大規模な開発では数十万行から数百万行に達する。この規模のコードは、開発者自身にとっても管理が難しい。他の人が書いたソースコードを読む場合もある。自分で書いたコードであっても、後で読み返したときに意味がわからなくなることがある。&lt;/p&gt;
&lt;p&gt;そこで、プログラムの実行とは関係のないコメントをソースコードに記述できる。C 言語のコメントは &lt;code&gt;/*&lt;/code&gt; で始まり、&lt;code&gt;*/&lt;/code&gt; で終わる。&lt;code&gt;/*&lt;/code&gt; と &lt;code&gt;*/&lt;/code&gt; の間にある文字は、例外なくコンパイル時に取り除かれる。改行を含められるため、複数行のコメントも記述できる。コメントを残しておけば、他の人がソースコードを読むときに処理内容を説明できる。また、後で自分が読み返したときにも、コードの意味を思い出しやすくなる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* コメントなのでプログラムには影響しない */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;これは実行されます。&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* printf(&amp;#34;コメント内にあるため実行されません。\n&amp;#34;); */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    ソースコードを読み解きやすくするための補足説明などを記述する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    コメントは複数行でもよい。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;    */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このプログラムでは、ソースコード内にコメントを記述している。このように、大規模な開発プロジェクトではプログラムの説明をコメントとして残すことが望ましい。ただし、文字列リテラルの中にコメントを書くことはできない。&lt;/p&gt;
&lt;p&gt;また、コメントを入れ子にすることもできない。たとえば &lt;code&gt;/* /* */ */&lt;/code&gt; と記述すると、&lt;code&gt;/* /* */&lt;/code&gt; までがコメントとして解釈される。&lt;/p&gt;
&lt;p&gt;元の C 言語仕様には定義されていないが、多くのコンパイラーは 1 行コメントもサポートしている。1 行コメントは連続したスラッシュ文字 &lt;code&gt;//&lt;/code&gt; で始まり、その行の末尾までをコメントにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// これはコメントである。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 範囲は 1 行だけなので、各行に指定する必要がある。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kitty on your lap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// 行の途中にも記述できる。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/////////// これもコメントである。 ///////////
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1 行コメントは C++ 言語仕様であり、元の C 言語仕様には含まれていない。しかし、現在の多くのコンパイラーは C++ をサポートしているため、C 言語でも 1 行コメントを使用できる。たとえば、ある行を一時的に無効化してコンパイルしたい場合に、1 行コメントを使って簡単に試せる。古い C 規格にも厳密に準拠するコードを書く必要がある場合は、この形式を避けること。&lt;/p&gt;
&lt;p&gt;C 言語のコメント &lt;code&gt;/* */&lt;/code&gt; と C++ で追加されたコメント &lt;code&gt;//&lt;/code&gt; は、多くのプログラミング言語で共通して使われている。C/C++、Java、C#、JavaScript などでも利用できる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | C 言語入門 | scanf() によるデータ入力</title>
      <link>https://www.devkuma.com/jp/docs/c/scanf/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/scanf/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;scanf()&lt;/code&gt; 関数を使って、キーボードから入力した値を受け取る方法を説明する。&lt;/p&gt;
&lt;h2 id=&#34;ユーザー入力を受け取る&#34;&gt;ユーザー入力を受け取る&lt;/h2&gt;
&lt;p&gt;これまでのプログラムでは、変数に定数を代入してきた。実際のプログラムでは、実行時に動的に変化する値を扱うときに変数が役立つ。&lt;/p&gt;
&lt;p&gt;動的に変化する値はどのように受け取るのだろうか。ディスクファイルからデータを読む方法がある。たとえば、テキストファイルを読み込んで画面に表示する場合、その内容は実行時に変化する。ただし、ファイルの読み込みは中級の内容であるため、後で説明する。&lt;/p&gt;
&lt;p&gt;より簡単な方法はキーボード入力である。プログラムの用途が広がり、テストもしやすくなる。キーボードから値を入力するには &lt;code&gt;scanf()&lt;/code&gt; を使う。&lt;code&gt;scanf()&lt;/code&gt; は &lt;code&gt;printf()&lt;/code&gt; の入力版にあたり、指定した変数にキーボードからの入力値を保存する。&lt;/p&gt;
&lt;h3 id=&#34;scanf-関数&#34;&gt;scanf() 関数&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;scanf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;フォーマット&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;変数名&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最初の引数にフォーマット文字列を指定し、2 番目以降に入力値を保存する変数を指定する。変換指定子は &lt;code&gt;printf()&lt;/code&gt; と似ている。整数には &lt;code&gt;%d&lt;/code&gt;、文字には &lt;code&gt;%c&lt;/code&gt; を使う。変数名の前には &lt;code&gt;&amp;amp;&lt;/code&gt; を付ける。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;amp;&lt;/code&gt; が必要なのは、関数に変数のアドレスを渡すためである。詳しくはポインターの記事で説明する。ここでは、&lt;code&gt;scanf()&lt;/code&gt; に変数を渡すときは、変数名の前に &lt;code&gt;&amp;amp;&lt;/code&gt; を付けると覚えておこう。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;scanf()&lt;/code&gt; は、正しく変換して代入できた項目数を返す。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iVar&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;정수를 입력해 주세요. &amp;gt; &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;scanf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%d&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;입력한 수는 %d입니다.&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 を実行すると値の入力を求められる。整数を入力すると &lt;code&gt;iVar&lt;/code&gt; に代入され、画面に表示される。正しく変換できない値を入力した場合は代入されない。&lt;/p&gt;
&lt;p&gt;実用的なプログラムでは、複雑な入力に &lt;code&gt;scanf()&lt;/code&gt; を使うことは少ない。十分なエラー処理が難しいためである。通常は別の標準入力関数で文字列を読み込み、内容を確認して適切な値へ変換する。この本では、入門用の例を簡潔にするために &lt;code&gt;scanf()&lt;/code&gt; を使う。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語</title>
      <link>https://www.devkuma.com/jp/docs/c/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/</guid>
      <description>
        
        
        &lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/c/The_C_Programming_Language_logo.jpg&#34; alt=&#34;C 言語&#34;&gt;&lt;/p&gt;
&lt;p&gt;1970 年代から使われている歴史あるプログラミング言語であり、現在も多くのソフトウェア開発や教育機関で採用されている C プログラミング言語について解説する入門者向けの文書である。&lt;/p&gt;
&lt;p&gt;説明とサンプルコードは ANSI X3.159-1989, American National Standard for Information Systems - Programming Language - C に基づいている。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | フロー制御</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%9D%90%EB%A6%84-%EC%A0%9C%EC%96%B4/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%9D%90%EB%A6%84-%EC%A0%9C%EC%96%B4/</guid>
      <description>
        
        
        
      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | フロー制御 | do-while 文</title>
      <link>https://www.devkuma.com/jp/docs/c/do~while%EB%AC%B8/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/do~while%EB%AC%B8/</guid>
      <description>
        
        
        &lt;p&gt;繰り返す文を実行した後で、繰り返すかどうかを判断する &lt;code&gt;do&lt;/code&gt; 文について説明する。&lt;code&gt;do&lt;/code&gt; 文は &lt;code&gt;while&lt;/code&gt; 文とは異なり、条件に関係なく必ず 1 回は文を実行する。&lt;/p&gt;
&lt;h2 id=&#34;条件判定を後で行う繰り返し処理&#34;&gt;条件判定を後で行う繰り返し処理&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;while&lt;/code&gt; 文は、繰り返す文を実行する前に条件式を評価し、繰り返し処理を続けるかどうかを決める。これに対して、文を実行した後で条件式を評価するものが &lt;code&gt;do&lt;/code&gt; 文である。&lt;/p&gt;
&lt;h3 id=&#34;do-文&#34;&gt;do 文&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;do 文 while (条件式);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;繰り返し対象の文を先に実行する点を除けば、&lt;code&gt;do&lt;/code&gt; 文は基本的に &lt;code&gt;while&lt;/code&gt; 文と同じである。&lt;code&gt;while&lt;/code&gt; 文は条件式を評価してからループを実行するため、最初の評価が偽なら文を一度も実行しない。条件の結果にかかわらず最低 1 回は実行したい場合に、&lt;code&gt;do&lt;/code&gt; 文が役立つ。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iMax&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;반복 횟수를 입력하십시오. &amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;scanf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%d&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iMax&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%d번째 루프입니다.&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iMax&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 は繰り返し回数を入力し、指定された値を基に &lt;code&gt;do&lt;/code&gt; 文で処理を繰り返す。&lt;code&gt;while&lt;/code&gt; 文との大きな違いは、&lt;code&gt;iCount &amp;lt;= iMax&lt;/code&gt; が成立しない場合でも必ず 1 回は文を実行する点である。入力値が負数や &lt;code&gt;0&lt;/code&gt; であっても、条件式を文の実行後に評価するため、&lt;code&gt;do&lt;/code&gt; 文は必ず 1 回実行される。&lt;/p&gt;
&lt;p&gt;特殊な場合を除けば、&lt;code&gt;do&lt;/code&gt; 文を使う機会は多くない。しかし、ほかの人が書いたコードを読むときに登場する可能性があり、アルゴリズムによっては &lt;code&gt;do&lt;/code&gt; 文を使うと分かりやすく書ける。覚えておくとよい。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | フロー制御 | 条件演算子</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%A1%B0%EA%B1%B4-%EC%97%B0%EC%82%B0%EC%9E%90/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%A1%B0%EA%B1%B4-%EC%97%B0%EC%82%B0%EC%9E%90/</guid>
      <description>
        
        
        &lt;p&gt;条件の結果に応じて式を選択する条件演算子について説明する。&lt;code&gt;if&lt;/code&gt; 文とは異なり、条件演算子は 2 つの式から 1 つを選ぶ。&lt;/p&gt;
&lt;h2 id=&#34;3-項演算子&#34;&gt;3 項演算子&lt;/h2&gt;
&lt;p&gt;C 言語の演算子の多くは、1 つのオペランドを受け取る単項演算子か、2 つのオペランドを受け取る 2 項演算子である。条件演算子 &lt;code&gt;? :&lt;/code&gt; は、3 つのオペランドを受け取る 3 項演算子である。&lt;/p&gt;
&lt;p&gt;条件演算子を使うと、&lt;code&gt;if&lt;/code&gt; 文に似た処理を 1 つの式で表現できる。小規模な分岐に適している。たとえば、&lt;code&gt;n&lt;/code&gt; が &lt;code&gt;0&lt;/code&gt; でなければ &lt;code&gt;z&lt;/code&gt; に &lt;code&gt;x&lt;/code&gt; を代入し、そうでなければ &lt;code&gt;y&lt;/code&gt; を代入する。&lt;/p&gt;
&lt;h3 id=&#34;条件演算子&#34;&gt;条件演算子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;条件式 ? 式1 : 式2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;条件式が真であれば式 1 を選択し、その値を返す。そうでなければ式 2 を選択する。&lt;code&gt;z&lt;/code&gt; に代入する値を条件で分岐する場合は、次のように書く。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;z = n ? x : y;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;n&lt;/code&gt; が真なら &lt;code&gt;z&lt;/code&gt; に &lt;code&gt;x&lt;/code&gt; を代入し、そうでなければ &lt;code&gt;y&lt;/code&gt; を代入する。同じ処理は &lt;code&gt;if-else&lt;/code&gt; 文でも書けるが、条件演算子のほうが簡潔である。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main() {
  int iVariable;
  printf(&amp;#34;Please input a number 0 or some else&amp;gt;&amp;#34;);
  scanf(&amp;#34;%d&amp;#34; , &amp;amp;iVariable);
 printf(&amp;#34;An input value is %s.\n&amp;#34; , iVariable ? &amp;#34;True&amp;#34; : &amp;#34;False&amp;#34;);
  return 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このプログラムは、ユーザーから &lt;code&gt;0&lt;/code&gt; または別の値を受け取り、その値が真か偽かを表示する。&lt;code&gt;iVariable ? &amp;quot;True&amp;quot; : &amp;quot;False&amp;quot;&lt;/code&gt; は、&lt;code&gt;iVariable&lt;/code&gt; が真なら &lt;code&gt;&amp;quot;True&amp;quot;&lt;/code&gt;、そうでなければ &lt;code&gt;&amp;quot;False&amp;quot;&lt;/code&gt; を返す。&lt;code&gt;printf()&lt;/code&gt; の変換指定子 &lt;code&gt;%s&lt;/code&gt; によって、選択された文字列を表示する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 関数</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%95%A8%EC%88%98/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%95%A8%EC%88%98/</guid>
      <description>
        
        
        &lt;p&gt;関数とは、特定の機能を独立した単位として実装するものであり、構造化プログラミングの重要な概念である。ここでは関数の作成方法と呼び出し方法について説明する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 配列</title>
      <link>https://www.devkuma.com/jp/docs/c/%EB%B0%B0%EC%97%B4/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EB%B0%B0%EC%97%B4/</guid>
      <description>
        
        
        &lt;p&gt;配列は、番号であるインデックスと、それに対応するデータで構成されるデータ構造である。ここでは配列の宣言方法と使い方について説明する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | ポインタ</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%8F%AC%EC%9D%B8%ED%84%B0/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%8F%AC%EC%9D%B8%ED%84%B0/</guid>
      <description>
        
        
        &lt;p&gt;ポインタは C 言語の強力な機能の一つであり、学習者にとって難しい概念でもある。ここでは基本概念から順を追って説明する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | ポインター | 文字列ポインター</title>
      <link>https://www.devkuma.com/jp/docs/c/%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AC%EC%9D%B8%ED%84%B0/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AC%EC%9D%B8%ED%84%B0/</guid>
      <description>
        
        
        &lt;p&gt;文字配列と文字列へのポインターについて説明する。文字列リテラルはポインター経由で変更してはいけない。文字列リテラルを基に編集する場合は、配列にコピーする。&lt;/p&gt;
&lt;h2 id=&#34;文字列リテラルへのポインター&#34;&gt;文字列リテラルへのポインター&lt;/h2&gt;
&lt;p&gt;配列を文字列リテラルで初期化すると、文字列を配列に保存できる。それでは、初期化以外の式で文字列リテラルを指定した場合、どのように扱われるのだろうか。文字列リテラルは、その文字列へのポインターとして評価される。&lt;/p&gt;
&lt;p&gt;たとえば、&lt;code&gt;printf(&amp;quot;Kitty on your lap&amp;quot;)&lt;/code&gt; は &lt;code&gt;printf()&lt;/code&gt; 関数に &lt;code&gt;char *&lt;/code&gt; 型の値を渡していると考えられる。この文字列はどこに保存されるのだろうか。&lt;/p&gt;
&lt;p&gt;文字列リテラルや数値などの定数は、コンパイル時にバイナリーデータへ変換され、実行ファイルに保存される。プログラムを実行すると、そのデータが定数としてメモリーに読み込まれる。具体的な保存方法や読み込み方法は、コンパイラーとシステムに依存する。&lt;/p&gt;
&lt;p&gt;文字列リテラルは実行時にすでにメモリー上にあるため、別の配列にコピーする意味があるのは文字単位で編集する場合である。目的に応じて、リテラルへのポインターを使うか、配列にコピーするかを選択する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;char chStr[] = &amp;#34;Kitty on your lap&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この文は文字列リテラルを新しい配列 &lt;code&gt;chStr&lt;/code&gt; にコピーする。作成した配列を編集する場合に有効である。単に文字列を指す変数が必要なだけなら、配列にコピーする必要はない。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;char *chpStr = &amp;#34;Kitty on your lap&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これは配列の初期化とは大きく異なる。&lt;code&gt;chStr[] = &amp;quot;...&amp;quot;&lt;/code&gt; は文字列を保存できる大きさの配列を確保し、リテラルをコピーする。一方、&lt;code&gt;*chpStr = &amp;quot;Kitty on your lap&amp;quot;&lt;/code&gt; は、実行ファイルからメモリーに読み込まれた文字列リテラルのアドレスを代入する。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main() {
 char *chpStr = &amp;#34;Kitty on your lap&amp;#34;;
 printf(&amp;#34;%s\n&amp;#34; , chpStr);
 return 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;コード 1 は文字列リテラル &lt;code&gt;&amp;quot;Kitty on your lap&amp;quot;&lt;/code&gt; のアドレスを &lt;code&gt;chpStr&lt;/code&gt; に代入し、文字列を表示する。このポインターから文字列リテラルを変更してはいけない。変更しようとした場合の動作は未定義である。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | ポインター | ポインターの配列</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%8F%AC%EC%9D%B8%ED%8A%B8-%EB%B0%B0%EC%97%B4/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%8F%AC%EC%9D%B8%ED%8A%B8-%EB%B0%B0%EC%97%B4/</guid>
      <description>
        
        
        &lt;p&gt;各要素がポインターである配列を作成する方法を説明する。ポインターの配列を使うと、大量のデータを構造的に管理できる。&lt;/p&gt;
&lt;h2 id=&#34;ポインターの配列を作る&#34;&gt;ポインターの配列を作る&lt;/h2&gt;
&lt;p&gt;ポインターはメモリーアドレスを保存する変数の一種である。整数型などの通常の変数と同じように、ポインターも配列に格納できる。各要素がポインターである点を除けば、通常の配列と同じように扱える。1 次元配列でも多次元配列でも基本は同じである。&lt;/p&gt;
&lt;p&gt;ポインターの配列は次のように宣言する。&lt;/p&gt;
&lt;h3 id=&#34;ポインター配列の宣言&#34;&gt;ポインター配列の宣言&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;型 *ポインター変数名[];
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この構文を使うと、複数のポインターを配列としてまとめて管理できる。インデックスを指定して保存されたアドレスを取得したり、そのアドレスにある内容にアクセスしたりできる。配列とポインターを理解していれば、ポインター変数を配列にしたものとして扱える。&lt;/p&gt;
&lt;p&gt;たとえば、複数の文字列を配列のように管理する場合、多次元配列よりも文字列へのポインターを配列として管理するほうが自然である。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main() {
 char *chStr[] = {
   &amp;#34;Blue Blue Glass Moon&amp;#34; ,
    &amp;#34;Under The Crimson Air&amp;#34;
 };

  printf(&amp;#34;%s\n%s\n&amp;#34; , *chStr , *(chStr + 1));
 return 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;コード 1 の配列 &lt;code&gt;chStr&lt;/code&gt; は、文字列へのポインターを格納する 2 つの要素で構成されている。配列の要素に文字列そのものが入っているわけではなく、文字列へのポインターだけを保存している。2 次元配列による文字列テーブルと比べて柔軟であり、参照するアドレスを変更するだけでテーブルを更新できる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | ポインター | 汎用ポインター</title>
      <link>https://www.devkuma.com/jp/docs/c/%EB%B2%94%EC%9A%A9-%ED%8F%AC%EC%9D%B8%ED%84%B0/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EB%B2%94%EC%9A%A9-%ED%8F%AC%EC%9D%B8%ED%84%B0/</guid>
      <description>
        
        
        &lt;p&gt;任意の型のポインターを格納できる &lt;code&gt;void&lt;/code&gt; ポインターについて説明する。型に依存せず、関数を通じてポインターを渡すときに役立つ。&lt;/p&gt;
&lt;h2 id=&#34;汎用型&#34;&gt;汎用型&lt;/h2&gt;
&lt;p&gt;ポインターを受け取る関数で、ポインターの型を限定したくない場合がある。たとえば、状況に応じて異なる型のポインターを受け取ったり、返したりする関数である。&lt;/p&gt;
&lt;p&gt;型に関係なく、指定したメモリー範囲を特定の値で初期化する関数を考えてみよう。&lt;code&gt;char *&lt;/code&gt; を受け取る方法もあるが、ほかの型のポインターを使う呼び出し側は毎回キャストする必要がある。&lt;/p&gt;
&lt;p&gt;メモリー領域の初期化はデータ型に依存しない。このような場合は汎用ポインターを使う。&lt;code&gt;void&lt;/code&gt; ポインターには任意の型のポインターを代入でき、キャストによって元の型に戻せる。&lt;/p&gt;
&lt;h3 id=&#34;void-ポインターの宣言&#34;&gt;void ポインターの宣言&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;void * 変数名
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;void&lt;/code&gt; ポインターには、どの型のポインターでも代入できる。型に依存せずポインターを受け取る、簡潔な関数を作成できる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;FillMemory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mem&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;size&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;size&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;((&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mem&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;unsigned&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;FillMemory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iArray&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0xFF&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;iArray[%d] = %X&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iArray&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;FillMemory()&lt;/code&gt; は、メモリー領域へのポインター、サイズ、初期値を受け取る。この例では 8 要素の &lt;code&gt;int&lt;/code&gt; 配列を作成し、整数が 4 バイトであると仮定して、32 バイトを &lt;code&gt;0xFF&lt;/code&gt; で初期化する。&lt;/p&gt;
&lt;p&gt;型に関係なくメモリーアドレスを受け取る関数は珍しくない。拡張性の高いシステムで実体を抽象化するときに、&lt;code&gt;void&lt;/code&gt; ポインターを利用できる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | ポインター | main() 関数の引数</title>
      <link>https://www.devkuma.com/jp/docs/c/main-%ED%95%A8%EC%88%98%EC%9D%98-%EB%A7%A4%EA%B0%9C-%EB%B3%80%EC%88%98/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/main-%ED%95%A8%EC%88%98%EC%9D%98-%EB%A7%A4%EA%B0%9C-%EB%B3%80%EC%88%98/</guid>
      <description>
        
        
        &lt;p&gt;プログラムの起動時に、親プロセスやコマンドから渡された文字列を取得する方法を説明する。&lt;/p&gt;
&lt;h2 id=&#34;コマンドライン引数&#34;&gt;コマンドライン引数&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;main()&lt;/code&gt; 関数も引数を受け取ることができる。それでは、どこから引数を受け取るのだろうか。親プロセスがプログラムを起動するときに、オプションを文字列として渡すことができる。通常はコマンドラインから渡される。これにより、プログラムの実行に必要な情報を指定できる。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;main()&lt;/code&gt; 関数には 2 つの引数が渡される。1 つはコマンドラインから渡された引数の数である。もう 1 つは、コマンドライン引数として渡された文字列の配列である。慣例として、最初の仮引数を &lt;code&gt;argc&lt;/code&gt;、2 番目の仮引数を &lt;code&gt;argv&lt;/code&gt; と呼ぶ。&lt;code&gt;argc&lt;/code&gt; には引数の数、&lt;code&gt;argv&lt;/code&gt; には引数の文字列が格納される。一般的な &lt;code&gt;main()&lt;/code&gt; 関数は、これまで使ってきた引数を受け取らない形式のほかに、次の形式を利用できる。&lt;/p&gt;
&lt;h3 id=&#34;main-関数&#34;&gt;main() 関数&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;int main(int argc , char *argv[])
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;コマンドライン引数を処理する場合は、この形式を使う。仮引数名は任意だが、argument count を略した &lt;code&gt;argc&lt;/code&gt; と argument vector を略した &lt;code&gt;argv&lt;/code&gt; を使うのが慣例である。配列変数 &lt;code&gt;argv&lt;/code&gt; にアクセスすると、指定した番号のコマンド文字列を取得できる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;argc&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;argv&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[])&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;argc&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%d번째 인수 = %s&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;argv&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 は &lt;code&gt;main()&lt;/code&gt; 関数に渡された引数を表示する。&lt;code&gt;argv[0]&lt;/code&gt; には必ず実行されたプログラム名が入る。&lt;code&gt;argc&lt;/code&gt; が &lt;code&gt;1&lt;/code&gt; より大きい場合は、コマンドライン引数が渡されている。&lt;/p&gt;
&lt;p&gt;コマンドライン引数は文字列の表として格納される。&lt;code&gt;argc&lt;/code&gt; を確認して &lt;code&gt;argv&lt;/code&gt; の適切な要素にアクセスすれば、必要な引数を取得できる。実質的な最初の引数は &lt;code&gt;argv[1]&lt;/code&gt;、最後の引数は &lt;code&gt;argv[argc - 1]&lt;/code&gt; である。また、規格では &lt;code&gt;argv[argc]&lt;/code&gt; が &lt;code&gt;NULL&lt;/code&gt; であることも保証されている。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 構造体の宣言</title>
      <link>https://www.devkuma.com/jp/docs/c/%EA%B5%AC%EC%A1%B0%EC%B2%B4-%EC%84%A0%EC%96%B8/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EA%B5%AC%EC%A1%B0%EC%B2%B4-%EC%84%A0%EC%96%B8/</guid>
      <description>
        
        
        &lt;p&gt;構造体について説明する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 構造体の宣言 | 自動変数 - auto</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%9E%90%EB%8F%99-%EB%B3%80%EC%88%98--auto/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%9E%90%EB%8F%99-%EB%B3%80%EC%88%98--auto/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;auto&lt;/code&gt; キーワードを使うと、宣言したブロック内だけで有効な自動変数であることを明示できる。ブロック内で宣言した変数は標準で自動変数になるため、現代の C 言語で &lt;code&gt;auto&lt;/code&gt; を使う実用的な意味はほとんどない。&lt;/p&gt;
&lt;h2 id=&#34;ローカルな寿命を持つ変数&#34;&gt;ローカルな寿命を持つ変数&lt;/h2&gt;
&lt;p&gt;C 言語の変数宣言では、変数の寿命を明示する記憶クラス指定子を使える。&lt;code&gt;typedef&lt;/code&gt; も厳密には記憶クラス指定子の一種だが、特殊なものだといえる。通常の記憶クラスは、変数がいつメモリーから解放されるかを決める。&lt;/p&gt;
&lt;h3 id=&#34;記憶クラス指定子&#34;&gt;記憶クラス指定子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;記憶クラス指定子 型 変数 ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;1 つの宣言に複数の記憶クラス指定子を組み合わせることはできない。&lt;/p&gt;
&lt;p&gt;関数本体などのブロック内で宣言した変数を自動変数と呼ぶ。自動変数はそのブロック内だけで有効であり、制御がブロックに入ったときに初期化され、ブロックから出ると解放される。ブロック内で宣言した変数は、コンパイラーが自動変数として扱う。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;auto&lt;/code&gt; を使うと、自動変数であることを明示できる。ただし実用上の利点がないため、通常は省略する。&lt;/p&gt;
&lt;h3 id=&#34;auto-記憶クラス指定子&#34;&gt;auto 記憶クラス指定子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;auto 型 変数名 ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;auto&lt;/code&gt; の意味は C 言語と C++ で異なる。C++11 では &lt;code&gt;auto&lt;/code&gt; は型推論を表す。C 言語における意味で &lt;code&gt;auto&lt;/code&gt; を使ったコードを C++ としてコンパイルすると、エラーになる場合がある。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auto&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kitty on your lap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%s&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 の &lt;code&gt;str&lt;/code&gt; は、&lt;code&gt;auto&lt;/code&gt; 記憶クラス指定子を使って自動変数であることを明示している。ただし、&lt;code&gt;auto&lt;/code&gt; を省略しても結果は変わらない。関数内で宣言した変数は標準で自動変数になる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 構造体の宣言 | レジスター変数 - register</title>
      <link>https://www.devkuma.com/jp/docs/c/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0-%EB%B3%80%EC%88%98--register/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0-%EB%B3%80%EC%88%98--register/</guid>
      <description>
        
        
        &lt;p&gt;通常の変数は主記憶装置に保存される。&lt;code&gt;register&lt;/code&gt; を付けて宣言した変数は、高速な CPU レジスターに配置される場合がある。実際にレジスターを使うかどうかはコンパイラーが判断する。&lt;/p&gt;
&lt;h2 id=&#34;レジスターに保存する&#34;&gt;レジスターに保存する&lt;/h2&gt;
&lt;p&gt;関数内で頻繁に参照する変数がある。たとえば、画像処理をループで行う場合、ピクセル変換に使う変数へ何度もアクセスする。頻繁に参照する値は、より高速な記憶領域に保存するとよい。&lt;/p&gt;
&lt;p&gt;C 言語では、そのような変数をレジスター変数として宣言できる。レジスターは CPU 内にある高速な記憶領域である。&lt;/p&gt;
&lt;p&gt;通常の変数は主記憶装置に保存される。レジスターに値があれば、CPU が処理前に主記憶装置から値を転送する必要がないため、高速に動作できる。&lt;/p&gt;
&lt;h3 id=&#34;register-指定子&#34;&gt;register 指定子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;register 型 変数名 ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;レジスターの数やサイズは物理的なコンピューターに依存する。レジスターへの保存が適切でない場合、コンパイラーは &lt;code&gt;register&lt;/code&gt; 宣言を無視し、通常の変数として扱える。&lt;/p&gt;
&lt;p&gt;レジスター変数は主記憶装置に配置されるとは限らないため、アドレスを取得できない。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main() {
 register int i;
 register int k;

 i = 5;
  k = i * 3;

  printf(&amp;#34;i = %d, k = %d\n&amp;#34; , i, k);
 return 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このコードは &lt;code&gt;i&lt;/code&gt; と &lt;code&gt;k&lt;/code&gt; をレジスター変数として宣言する。実際にレジスターへ保存されるかどうかはコンパイラーに依存する。&lt;/p&gt;
&lt;p&gt;現代のコンパイラーは十分にコードを最適化するため、現在では &lt;code&gt;register&lt;/code&gt; 指定子を使う必要はほとんどない。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 構造体の宣言 | 静的変数 - static</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%A0%95%EC%A0%81-%EB%B3%80%EC%88%98--static/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%A0%95%EC%A0%81-%EB%B3%80%EC%88%98--static/</guid>
      <description>
        
        
        &lt;p&gt;通常のローカル変数は関数が終了すると値を失う。&lt;code&gt;static&lt;/code&gt; 指定子を付けた静的変数は永続的な寿命を持つ。関数内だけで利用するローカル変数でありながら、グローバル変数のようにアプリケーションが終了するまで値を保持する。&lt;/p&gt;
&lt;h2 id=&#34;永続的なローカル変数&#34;&gt;永続的なローカル変数&lt;/h2&gt;
&lt;p&gt;関数内で宣言した変数は、通常はローカルな寿命を持つ。関数を実行するときに初期化され、関数から戻ると解放される。計算に必要な一時的な保存領域に適している。&lt;/p&gt;
&lt;p&gt;ただし、長期間保持したい状態もある。たとえば、関数が何回呼び出されたかを記録する場合である。関数内で専用のカウンターを増やす方法は確実だが、自動変数では関数から戻るたびに値を失う。&lt;/p&gt;
&lt;p&gt;グローバル変数なら値を保持できるが、別の関数から誤って変更される可能性がある。静的変数を使うと、プログラムの終了まで値を保持しながら、ほかの関数からアクセスできないようにできる。&lt;/p&gt;
&lt;h3 id=&#34;static-指定子&#34;&gt;static 指定子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;static 型 変数名 ...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このように宣言した変数はグローバルな寿命を持つ。関数内で宣言した場合でも、関数から戻るときに破棄されない。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ShowCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;iCount = %d&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iCount&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;ShowCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;ShowCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;ShowCount&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ShowCount()&lt;/code&gt; 関数は呼び出された回数を表示する。静的変数 &lt;code&gt;iCount&lt;/code&gt; は 1 回だけ初期化され、呼び出すたびに増加する。&lt;/p&gt;
&lt;p&gt;静的変数は、固定文字列を格納する文字配列など、常に同じ値を使う場合の初期化コストを減らす目的でも利用できる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 構造体の宣言 | 関数の記憶クラス</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%95%A8%EC%88%98%EC%9D%98-%EA%B8%B0%EC%96%B5-%ED%81%B4%EB%9E%98%EC%8A%A4/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%95%A8%EC%88%98%EC%9D%98-%EA%B8%B0%EC%96%B5-%ED%81%B4%EB%9E%98%EC%8A%A4/</guid>
      <description>
        
        
        &lt;p&gt;関数の宣言では、&lt;code&gt;extern&lt;/code&gt; 指定子と &lt;code&gt;static&lt;/code&gt; 指定子を使って記憶クラスを指定できる。ほかのソースファイルから呼び出せないように関数を隠すには、&lt;code&gt;static&lt;/code&gt; を付けて宣言する。&lt;/p&gt;
&lt;h2 id=&#34;関数の可視性&#34;&gt;関数の可視性&lt;/h2&gt;
&lt;p&gt;関数には、変数のような内部レベルはない。関数は常にグローバルな有効期間を持ち、同じファイル内であればどこからでも参照できる。ただし、関数を呼び出す前にプロトタイプ宣言が必要であることは、関数の宣言の記事で説明した。&lt;/p&gt;
&lt;p&gt;複数のファイルを同時にコンパイルすると、変数と同様に関数名も衝突する可能性がある。そのため、関数にも記憶クラスがある。関数に指定できる記憶クラスは &lt;code&gt;static&lt;/code&gt; と &lt;code&gt;extern&lt;/code&gt; である。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;static&lt;/code&gt; 記憶クラスを持つ関数は、その関数を定義したファイル内からだけ呼び出せる。ほかのファイルの関数からは呼び出せない。反対に、&lt;code&gt;extern&lt;/code&gt; 関数はほかのファイルからも呼び出せる。記憶クラスを省略した場合は、暗黙的に &lt;code&gt;extern&lt;/code&gt; が使われる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Function1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Function2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/*Function1();  /*error*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;Function2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;コード 2&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Function1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;extern&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Function2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 とコード 2 を同時にコンパイルすると、&lt;code&gt;main()&lt;/code&gt; 関数から &lt;code&gt;Function2()&lt;/code&gt; は呼び出せるが、&lt;code&gt;Function1()&lt;/code&gt; はコード 1 から見えないため呼び出せない。コメントになっている &lt;code&gt;Function1()&lt;/code&gt; の呼び出しを有効にするとエラーになる。&lt;code&gt;Function1()&lt;/code&gt; は &lt;code&gt;static&lt;/code&gt; 記憶クラスを持つため、外部ファイルから見えない。&lt;/p&gt;
&lt;p&gt;これは、特定のファイル内の処理に特化した関数を作るときに役立つ。独立性が低い関数には &lt;code&gt;static&lt;/code&gt; 記憶クラスを指定し、名前の衝突を避けるとよい。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | プリプロセス</title>
      <link>https://www.devkuma.com/jp/docs/c/%EC%A0%84%EC%B2%98%EB%A6%AC-preprocess/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EC%A0%84%EC%B2%98%EB%A6%AC-preprocess/</guid>
      <description>
        
        
        &lt;p&gt;プリプロセッサディレクティブは、コンパイル前にソースコードを処理する方法を指定する。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 前処理 | インクルード - #include</title>
      <link>https://www.devkuma.com/jp/docs/c/include/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/include/</guid>
      <description>
        
        
        &lt;p&gt;コンパイル前に処理される &lt;code&gt;#include&lt;/code&gt; プリプロセッサディレクティブを使うと、宣言などをまとめたヘッダーファイルを各ソースファイルに取り込める。この処理をインクルード（include）と呼ぶ。&lt;/p&gt;
&lt;h2 id=&#34;ヘッダーファイルの作成&#34;&gt;ヘッダーファイルの作成&lt;/h2&gt;
&lt;p&gt;複数のファイルで構成される中規模以上の開発プロジェクトでは、プログラミング手法だけでなく、ファイル構成も重要になる。ここで扱う小さなテストプログラムなら 1 つのファイルで十分だが、実際の開発はそうではない。開発メンバーは 1 人とは限らず、あるグループはグラフィック、別のグループは音声というように、異なる分野を同時に開発することもある。これらを 1 つのファイルだけで管理することはできない。&lt;/p&gt;
&lt;p&gt;論理的に分離された機能をファイルごとに開発する場合、最後にまとめてコンパイルする必要がある。一般に、&lt;code&gt;main()&lt;/code&gt; 関数を含み、実行ファイルの作成に使うソースファイルには &lt;code&gt;*.c&lt;/code&gt; という拡張子を付ける。それ以外のライブラリの役割や機能群を提供するファイルは、&lt;code&gt;*.h&lt;/code&gt; という拡張子を持つヘッダーファイルにする慣習がある。ヘッダーファイルは &lt;code&gt;main()&lt;/code&gt; 関数の前に挿入される。&lt;/p&gt;
&lt;p&gt;複数のファイルをまとめてコンパイルするには、&lt;code&gt;#include&lt;/code&gt; プリプロセッサディレクティブを使い、指定した位置にヘッダーファイルを挿入するようコンパイラーに伝える。コンパイラーは &lt;code&gt;#include&lt;/code&gt; を見つけると、その位置に指定されたファイルを挿入する。これまでは &lt;code&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt; のように記述し、C 言語が標準で提供するライブラリファイルを取り込んできた。この処理をインクルードと呼ぶ。&lt;/p&gt;
&lt;p&gt;標準ファイル以外をインクルードする場合は、&lt;code&gt;#include &amp;quot;ファイル名&amp;quot;&lt;/code&gt; のようにファイル名を二重引用符で囲む。この方法は &lt;a href=&#34;https://www.devkuma.com/books/pages/862&#34;&gt;初めての C 言語&lt;/a&gt; で説明した。コンパイラーがファイルを検索する方法については、利用しているコンパイラーのドキュメントを参照すること。二重引用符で囲まれている場合、通常は &lt;code&gt;*.c&lt;/code&gt; ファイルと同じディレクトリが検索される。&lt;/p&gt;
&lt;p&gt;インクルードは、単純にファイルを挿入する処理だと考えればよい。&lt;code&gt;#&lt;/code&gt; で始まる命令はコンパイラーではなく、プリプロセッサに対する命令である。前処理はソースコードのコンパイル前に実行される。&lt;code&gt;#include&lt;/code&gt; はファイルを挿入する命令なので、コンパイラーがソースコードを処理する前に、指定された位置へファイルの内容をそのまま挿入する。開発者は共通の関数宣言などをヘッダーファイルに記述し、プロジェクトの C ソースファイルに取り込める。これにより、同じ宣言を何度も記述する必要がなくなる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;/* sample.h */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;strlen&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;コード 2&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;strlen&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;++&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;count&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;コード 3&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;#34;sample.h&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kitty on your lap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%s length=%d&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;strlen&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;str&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 のヘッダーファイルを作成し、コード 3 にインクルードしてコンパイルする。すると、&lt;code&gt;#include &amp;quot;sample.h&amp;quot;&lt;/code&gt; と記述した位置にヘッダーファイルの内容がそのままコピーされ、コンパイルされる。コード 1 では、NULL 文字を除いた文字列の文字数を返す &lt;code&gt;strlen()&lt;/code&gt; 関数を宣言している。&lt;code&gt;strlen()&lt;/code&gt; 関数の実装はコード 2 に記述している。このようなヘッダーファイルを一度作成すれば、さまざまな開発プロジェクトで再利用できる。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 前処理 | 文字列化</title>
      <link>https://www.devkuma.com/jp/docs/c/%EB%AC%B8%EC%9E%90%EC%97%B4%ED%99%94/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EB%AC%B8%EC%9E%90%EC%97%B4%ED%99%94/</guid>
      <description>
        
        
        &lt;p&gt;関数形式マクロに渡したコードを文字列へ変換する方法を説明する。文字列ではないテキストをマクロに渡し、展開時に文字列へ変換できる。&lt;/p&gt;
&lt;h2 id=&#34;関数形式マクロと文字列化演算子&#34;&gt;関数形式マクロと文字列化演算子&lt;/h2&gt;
&lt;p&gt;関数形式マクロで利用できる前処理演算子には、引数として受け取ったトークン列を文字列へ変換するものがある。トークン列を解析し、引用符を付けた形に展開する。これにより、数値やトークン列を自動的に文字列へ変換するマクロを作成できる。&lt;/p&gt;
&lt;p&gt;トークン列を文字列化するには、マクロの引数の前に &lt;code&gt;#&lt;/code&gt; 演算子を付ける。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#define TOSTRING(param) #param
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これはマクロであるため、&lt;code&gt;param&lt;/code&gt; に渡すトークン列の形式は制限されない。&lt;code&gt;#&lt;/code&gt; 演算子はどのようなトークン列でも文字列化する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;TOSTRING(1234) → &amp;#34;1234&amp;#34;

TOSTRING(int iValue = 10\n) → &amp;#34;int iValue = 10\\n&amp;#34;

TOSTRING(&amp;#34;Kitty&amp;#34;) → &amp;#34;\&amp;#34;Kitty\&amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この変換はコンパイル前のソーステキストに対して行われる。プログラムの実行時に動的に変換するものではない。文字列化演算子は引用符を &lt;code&gt;\&amp;quot;&lt;/code&gt;、バックスラッシュを &lt;code&gt;\\&lt;/code&gt; に変換し、元のトークン列を文字列として保持する。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;コード 1&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define PRINTLN(string) printf(#string &amp;#34;\n&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;PRINTLN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0xFF&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;PRINTLN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Kitty&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;on&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;your&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;PRINTLN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Kernighan&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Ritchie&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;wrote&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;hello, world&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;on&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;their&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;book&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コード 1 の &lt;code&gt;PRINTLN()&lt;/code&gt; マクロは、引数を文字列化して &lt;code&gt;printf()&lt;/code&gt; で表示する。最後の例には &lt;code&gt;&amp;quot;hello, world\n&amp;quot;&lt;/code&gt; というトークンが含まれており、プリプロセッサーによって &lt;code&gt;\&amp;quot;hello, world\\n\&amp;quot;&lt;/code&gt; に変換される。そのため、引用符とエスケープシーケンスがそのまま表示される。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 前処理 | トークン連結 ##</title>
      <link>https://www.devkuma.com/jp/docs/c/%ED%86%A0%ED%81%B0-%EC%97%B0%EA%B2%B0/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%ED%86%A0%ED%81%B0-%EC%97%B0%EA%B2%B0/</guid>
      <description>
        
        
        &lt;p&gt;任意のトークンを結合する &lt;code&gt;##&lt;/code&gt; 演算子について説明する。主に、マクロへ渡した引数を別のマクロや値と結合するときに使う。&lt;/p&gt;
&lt;h2 id=&#34;トークン連結演算子&#34;&gt;トークン連結演算子&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;#define&lt;/code&gt; で定義したマクロには、文字列化演算子のほかに重要な前処理演算子がある。2 つのシャープ記号で構成される &lt;code&gt;##&lt;/code&gt;、つまりトークン連結演算子である。通常のマクロと関数形式マクロの両方で使える。&lt;/p&gt;
&lt;h3 id=&#34;-演算子&#34;&gt;&lt;code&gt;##&lt;/code&gt; 演算子&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;トークン1 ## トークン2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;トークン連結演算子は、左側と右側のトークンを結合する。これは前処理によるソースレベルの処理であり、プログラムの実行中に動的に結合するものではない。たとえば、&lt;code&gt;WIN ## 32&lt;/code&gt; は &lt;code&gt;WIN32&lt;/code&gt;、&lt;code&gt;WIN ## 16&lt;/code&gt; は &lt;code&gt;WIN16&lt;/code&gt; になる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define INT16 short
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define INT32 int
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define INT(n) INT ## n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;INT()&lt;/code&gt; マクロはトークン &lt;code&gt;INT&lt;/code&gt; と引数 &lt;code&gt;n&lt;/code&gt; を結合する。たとえば、&lt;code&gt;INT(16)&lt;/code&gt; は &lt;code&gt;INT16&lt;/code&gt; に展開され、さらに &lt;code&gt;short&lt;/code&gt; に展開される。&lt;/p&gt;
&lt;h3 id=&#34;コード&#34;&gt;コード&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define TOKEN0 &amp;#34;Kitty&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define TOKEN1 &amp;#34;Kitten&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#define TOKEN(n) TOKEN ## n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%s&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;TOKEN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#000&#34;&gt;printf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;%s&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;TOKEN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;TOKEN()&lt;/code&gt; マクロは、結合するトークンの末尾を受け取る。たとえば &lt;code&gt;TOKEN(0)&lt;/code&gt; は &lt;code&gt;TOKEN&lt;/code&gt; と &lt;code&gt;0&lt;/code&gt; を結合して &lt;code&gt;TOKEN0&lt;/code&gt; になる。&lt;code&gt;TOKEN0&lt;/code&gt; は &lt;code&gt;#define&lt;/code&gt; で定義されているため、&lt;code&gt;&amp;quot;Kitty&amp;quot;&lt;/code&gt; に展開される。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;##&lt;/code&gt; で作成した新しいトークンは有効なトークンでなければならない。無効なトークンはコンパイルエラーになる。トークン連結はコンパイル前に行われるソースレベルの展開である。&lt;/p&gt;

      </description>
      
      <category>C</category>
      
    </item>
    
    <item>
      <title>C 言語 | 高度な機能</title>
      <link>https://www.devkuma.com/jp/docs/c/%EA%B3%A0%EA%B8%89-%EA%B8%B0%EB%8A%A5/</link>
      <pubDate>Sun, 22 Oct 2017 15:52:10 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/c/%EA%B3%A0%EA%B8%89-%EA%B8%B0%EB%8A%A5/</guid>
      <description>
        
        
        
      </description>
      
      <category>C</category>
      
    </item>
    
  </channel>
</rss>
