c言語 コンパイラ gcc

Linuxだと標準でgccコンパイラが付属しているのでそのまま使えるんですが、

Windowsでは標準ではついていなくて

Windowsでも同じことやりたいなと思って探してたら

分かりやすい記事があったのでシェアします。

ttp://ecei-tohoku.github.io/ppa/docs/gcc_for_windows.html



こちらです(・∀・)

Windows環境でもLinux(Unix)のコマンドを使用できるソフトの紹介記事でした。

暇なときに試してみようと思います。

(Windowsでも気軽にコンパイル出来たらいろいろはかどりそうです。)

c言語 配列 代入

C言語において配列の代入は方法としては2つあります。

方法①:
要素ごとに代入

例:
int a[3] = {1, 2, 3};
int b[3] = {0};

b[0] = a[0];

という感じです。


ちなみに、
b = a;

と書くとコンパイルエラーになります。

(アドレス代入扱いになるためです。)


方法②:
memcpyを使う。

例:
int a[3] = {1, 2, 3};
int b[3] = {0};

memcpy( b[0], a[0], sizeof(int) );

配列のコピーで代入と同じ結果を得ることができます。

全部の要素を代入したい時に便利です。

c言語 for文 条件

C言語に限らずですが、for文に記載する条件はいろんな書き方ができます。

一般的なのはこちらです。


例①:

int i;
for( i = 0; i < 10; i++ )
{
printf("ループ実行\n");
}

ループカウンタ「i」の初期値を0に設定し、

iの値が10未満ならループ実行、

ループするたびにiをインクリメント(1プラス)する、

という意味になります。

実際に実行すると「ループ実行」が10回出力されます。



こういう書き方もできます。

例②:

int i,j;
for( i = 0, j = 10; i < j; i++, j-- )
{
printf("ループ実行\n");
}

ループカウンタ「i」の初期値を0、「j」の初期値を10に設定し、

iの値がjの値未満ならループ実行、

ループするたびにiをインクリメント(1プラス)、jをデクリメント(1マイナス)する

という意味になります。

実際に実行すると「ループ実行」が5回出力されます。



初期値の部分はどんな値にも設定もできますし、

条件式の部分は「<」だけでなく、「||」や「&&」も使えます。

「==」や「!=」も使えるので、データテーブル(配列)の終端検知もできます。

ループごとに行うカウンタ更新のところも

ポインタ変数を指定することもできるので、

ループごとに配列の参照位置を変えていくこともできます。



今回の話はループの応用編になりますが、

使い方次第でいろんな処理を実現できるので、

頭の片隅に置いておいていただけると幸いです。