コンテンツにスキップ

C言語・C++

ガイド

インストール

Mac, Cling

1
brew install cling

Cling REPLでの変数定義と書き換え

  • 次のように書くと二度目のint a = 2;Redefinitonと怒られる
1
2
3
4
void maths() {
    int a = 1;
    int a = 2;
}
  • 上記でのエラーを回避したければ次のように書くとよい
1
2
3
4
5
void maths() {
    int a;
    a = 1;
    a = 2;
}

printf long longでワーニングを回避する

1
2
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

文字列切り出し

1
sprintf(dst, "%.4s", src);

文字列初期化

1
char c[11] = "";

文字列比較strcmp

1
2
3
4
5
if (strcmp(a, b) == 0) {
    printf("same\n");
} else {
    printf("different\n");
}

ポインタの使い方