C言語: メモリーのアドレスを知る。
変数が格納されている、メモリ上のアドレスを知るには printf
に %p
で表示できる。
変数には、&
をつける。配列のアドレスを知りたい場合は、&
は不要。
#include <stdio.h> int main(void) { int i1, i2, i3; printf("i1(%p)\n", &i1); printf("i2(%p)\n", &i2); printf("i3(%p)\n", &i3); int array[10]; printf("array___(%p)\n", array); printf("array[0](%p)\n", &array[0]); printf("array[1](%p)\n", &array[1]); printf("array[2](%p)\n", &array[2]); return 0; }
コンパイル後、実行結果。
# ./a.out i1(0x7fff510de818) i2(0x7fff510de814) i3(0x7fff510de810) array___(0x7fff510de820) array[0](0x7fff510de820) array[1](0x7fff510de824) array[2](0x7fff510de828)
10進数にすると、4バイトで区切られていることがわかる。 これは、int型が4バイトであるため。
C言語のプロトタイプ宣言
自作関数を作成する。 sum
関数を作成する。
#include<stdio.h> int main(void) { sum(); /* sum関数を呼び出す */ return 0; } int sum(void) { printf("%d\n", (1 + 100) * 100 /2); return 0; }
これをコンパイルしてみると以下のようなエラー。
sample2.c:6:5: warning: implicit declaration of function 'sum' is invalid in C99 [-Wimplicit-function-declaration] sum(); /* sum関数を呼び出す */ ^ 1 warning generated.
sum
関数がmain
より後ろに記述されているため、エラーとなった。このエラーを解決するには、最初にこの関数が存在することを明記する必要がある。
以下の通り記述する。
#include<stdio.h> int sum(void); /* プロトタイプ宣言 */ int main(void) { sum(); /* sum関数を呼び出す */ return 0; } int sum(void) { printf("%d\n", (1 + 100) * 100 /2); return 0; }
そして、コンパイルすると成功した。
C言語サンプル
「苦しんで覚えるC言語」というとんでもない題名の本で勉強を始める。
C言語の初歩。「Hello World」を表示する。 ファイル名は sample.c
とした。
#include<stdio.h> int main(void) { printf("Hello, World"); return 0; }
コンパイルする。
gcc sample.c
# ls -l total 32 -rwxr-xr-x 1 atani staff 8432 4 9 01:26 a.out -rw-r--r-- 1 atani staff 79 4 9 01:08 sample.c
a.out
というファイルができる。
実行してみる。
# ./a.out Hello, World%
出来た。