C

配列の長さを調べる

C

数字 int x[] = {3, 2, 6, 5}; int length = sizeof(x) / sizeof(x[0]); output: 4 文字列 char *str = "hoge hoge"; int length = strlen(str); // stdlib(string?) が必要 output: 9

Cでのstatic変数

C

C++とはずいぶん挙動が変わってくるので注意。 ◆ 関数内部の static 変数 その変数がプログラムの開始から終了まで生き続ける。 (通常の関数内変数が、その関数の終了とともに内容が破棄されるところを、破棄せずに保持する。) ◆ 関数外部(大域)のstatic…

基本型の一覧

C

どんな書き方が許されて、どれとどれが同じ意味か おすすめ同義の表現 char signed char unsigned char shortsigned short, short int, signed short int unsigned shortunsigned short int intsigned, signed int, 型指定なし unsigned intunsigned longsig…

関数ポインタの簡単な使用例

C

確認用のミニマムなやつ #include <stdio.h> int add(int a, int b); int sub(int a, int b); int (*p[2])(int x, int y) = { add, sub }; int main(void) { int a = 14, b = 23; int c, d; c = 0; //c = 1; d = (*p[c])(a, b); // c が 0 なら add, 1 なら sub が呼</stdio.h>…

C言語のシフトについて

C

シフト演算子 ">>" は算術シフトなのか?それとも論理シフトなのか? という疑問がふと沸いたので調べてみた。 #include<stdio.h> int main(void) { int si = -1; unsigned int ui = -1; printf("%d\n", si); printf("%u\n", ui); printf("%d\n", si >> 31); printf("</stdio.h>…

C言語メモ

C

「独習C」から印象的だったものを。 #include <stdio.h> #include <ctype.h> void string_up(char *p); int main(void) { char str[] = "This is a test."; string_up(str); printf(str); return 0; } void string_up(char *p) { while (*p) { *p = toupper(*p); p++; } } こ</ctype.h></stdio.h>…

C言語メモ

C

ポインタには、加減算しかできない。 (乗除算はできない) *p++; // ポインタそれ自体がインクリメント (*p)++; // ポインタの指すものがインクリメント