🦁

C言語勉強備忘録1

に公開

なぜCを勉強??

C言語を学ぶきっかけは42TokyoのPiscineを受けるためです!
実際に受けた方の記事を読むと課題がC言語で出る?みたいなので事前準備として学習始めました!
また、コンピュターの仕組みを学びたいと思ったのとポインタ、メモリ管理など低レイヤー周りの知識がまだまだ足りないので本格的に学んでいこうと思い始めました!

ここからは実際に基礎を学んでみて感じたことを備忘録として書いていきます。

文字列

C#やJavaのようなstring型は、C言語には存在しない。
C言語では文字列はchar型の配列として扱います。
例えば:

#include <stdio.h>

int main(void) {
    char str[] = "プログラミング";
    printf("%s\n", str);
}
// --出力
// プログラミング 

このように、文字列は内部的には文字の配列として表現されています。
char型の文字列は文字列の終端を表すヌル文字('\0')が入っています。これは「ここで終わりですよ」という意味です。

文字と文字列の違い

文字:シングルクウォート('')で囲う

char str = 'プ';

文字列:ダブルクウォート("")で囲う

char str[] = "プログラミング";

文字は1文字だけ、文字列は複数文字をまとめて扱うことができます。

memcpy

memcpyは配列をコピーするときに使います。

#include <stdio.h>
#include <string.h>  // memcpy を使うには必要
int main(void) {
    nt nums[3] = {1, 2, 3};
    
    int nums2[3];
    memcpy(nums2, nums, sizeof(nums2));
    // 上記のコードは nums を nums2 に、
    // nums2のサイズ分(sizeof(nums2) = int型3個分 = 12バイト)だけコピー
    for (int i = 0; i < 3; i++){
        printf("%d\n", nums2[i]);
    }
}

・memcpyの引数

  1. コピー先の配列
  2. コピー元の配列
  3. コピーするサイズ(バイト数)
    ・memcpyを使う際は<string.h>インクルードが必要

まとめ

  • C言語の文字列はchar型の配列で、ヌル文字('\0')で終端される
  • 文字と文字列はシングルクォートとダブルクォートで区別する
  • 配列をコピーするには memcpy が使える(<string.h> 必須)

次はポインタについて書きたいと思います!

Discussion