C言語・C++
ガイド
インストール
Mac, Cling
Cling REPLでの変数定義と書き換え
- 次のように書くと二度目の
int a = 2;
でRedefiniton
と怒られる
| void maths() {
int a = 1;
int a = 2;
}
|
- 上記でのエラーを回避したければ次のように書くとよい
| void maths() {
int a;
a = 1;
a = 2;
}
|
printf
long long
でワーニングを回避する
| long long i;
printf("node %lld", i);
|
構造体のメンバーの文字列に値を渡すstrcpy
strcpy
を使う.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | typedef struct Person {
char name[20];
int sex;
// char sex;
int age;
double height;
double weight;
} person_s;
person_s p;
person_s p;
strcpy(p.name, "Tom");
p.sex = 0;
|
配列の動的な定義
malloc
だと配列が初期化されないのでcalloc
を使うべし.
+BEGIN_EXAMPLE
int yms; yms = (int )calloc(row_num * sizeof(int), sizeof(int));
+END_EXAMPLE
配列を関数に渡すとき
C言語では関数の引数で「配列そのもの」を受け取れないため, 配列の先頭のアドレスを受け渡す. 配列の要素数は別途引数を用意して受け渡さないと, 関数内で配列の要素数を知るすべがない.
配列数のマクロを作っておくと便利らしい.
+BEGIN_EXAMPLE
define COUNTOF(array) (sizeof(array) / sizeof(array[0]))
+END_EXAMPLE
文字列切り出し
| sprintf(dst, "%.4s", src);
|
文字列初期化
文字列比較strcmp
| if (strcmp(a, b) == 0) {
printf("same\n");
} else {
printf("different\n");
}
|
ポインタの使い方