プログラミング演習 I メモ
ただの自己満メモ
グローバル変数とローカル変数
- グローバル変数:関数外に宣言した変数、どこからでも呼び出せる。
- ローカル変数:関数内に宣言した変数、宣言した関数内でのみ呼び出せる。
同名の変数が存在する場合、呼び出し箇所と近い方の変数が優先される。
グローバル変数は代入せずに宣言すると0を格納する。
print関数の変換指定子
%[フラグ][最小フィールド幅][.精度][修飾子]変換指定子
変換指定子 | 変数の型 | 概要 |
---|---|---|
%c | char | 文字 |
%s | har * | 文字列 |
%d | int | 10進整数 |
%hd | short int | 半分の精度の10進整数 |
%ld | long int | 倍精度の10進整数 |
%u | unsigned int | 符号なし10進整数 |
%hu | unsigned short int | 符号なし半分の精度の10進整数 |
%lu | unsigned long int | 符号なし倍精度の10進整数 |
%o | int | 8進整数 |
%x | int | 16進整数 |
%f | float | 実数 |
%lf | double | 倍精度の実数 |
%e | float | 実数の指数表示 |
%g | float | 実数の最適表示 |
桁数指定
printf("%f" , 3.14); // 3.140000(デフォルト)
printf("%.2f", 3.14); // 3.14 (下二桁)
printf("%.0f", 3.14); // 3 (小数点以下切り捨て)
printf("%.f" , 3.14); // 3 (小数点以下切り捨て)
printf("%5.2f", 3.14); // " 3.14"(右詰め)
printf("%.2f", 0.0 / 0); // "nan" (NaN)
printf("%.2f", 1.0 / 0); // "inf" (Infinity)
前置演算と後置演算
前置演算は「先に演算してから代入」
int i = 10;
int j = ++i; //i = 11 j = 11;
後置演算は「先に代入してから演算」
int i = 10;
int j = i++; //i = 11 j = 10;
値渡し・ポインタ渡し・参照渡し
- 値渡し:その値のコピーを関数に渡すため、関数の内部でその値を変更しても、関数を抜けた後にその影響が残らない。
- ポインタ渡し:値のポインタ(メモリ上の住所)を関数に渡すため、関数の内部でそのメモリ上の値を変更すると、関数を抜けた後にはその影響が残ったままとなる。
- 参照渡し(C++):ポインタ渡しと同様に、関数内部で値を変更すると、関数を抜けた後にもその影響が残る。
値渡し | ポインタ渡し | 参照渡し |
---|---|---|
var | *var | &var |
値渡し
#include <stdio.h>
void add1(int x) {
x += 1;
}
int main(void){
int a = 0;
add1(a);
printf("%d\n", a); // 0
return 0;
}
ポインタ渡し
#include <stdio.h>
void add1(int *x) {
*x += 1;
}
int main(void){
int a = 0;
add1(&a);
printf("%d\n", a); // 1
return 0;
}