1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ただのC言語演習メモ

Last updated at Posted at 2023-12-05

プログラミング演習 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;
}
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?