Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/solareenlo/clang
C 言語の練習リポジトリ
https://github.com/solareenlo/clang
Last synced: 4 days ago
JSON representation
C 言語の練習リポジトリ
- Host: GitHub
- URL: https://github.com/solareenlo/clang
- Owner: solareenlo
- Created: 2019-12-31T15:10:51.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-01-29T20:18:01.000Z (almost 5 years ago)
- Last Synced: 2024-11-08T02:46:27.314Z (about 2 months ago)
- Language: C
- Homepage:
- Size: 532 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# clang
C 言語のお勉強リポジトリ。## 説明
- `/c-basic` は C の基本
- `/c-advanced` は C のちょっと発展的内容## gcc によるコンパイル方法
### 一般的なコンパイル方法
```bash
# gcc を使ってコンパイルする
gcc hello_world.c -o main
# 実行ファイル main を実行する
./main
# 実行結果の Hello world が出力される
Hello World
```### ヘッダファイルがあるときのコンパイル方法
```bash
gcc -I . main.c calc.c
```- `-I` がヘッダファイルを明示的に指定する
- `-I .` がカレントディレクトリにあるヘッダファイルを指定する
- `-I .` はソースファイルよりも前に記入する## 変数とポインタ比較
| | 通常の変数 | ポインタ変数 | 説明 |
|----------|------------|--------------|---------------------------------------------------|
| 宣言 | int a; | int* p; | ポインタ変数は、変数の先に * を付ける |
| 値 | a | *p | ポインタ変数で値を示すには、先頭に * を付ける |
| アドレス | &a | p | 通常の変数でアドレスを示すには、先頭に & を付ける |## 配列変数とポインタの関係性
### その1
```c
int a[3] = {1, 2, 3};
int* p = &a[0];
```| 配列変数 | 配列変数のアドレス | 該当するポインタ | ポインタ変数の値 |
| :--------- | :------------------- | :----------------- | :--------------- |
| a[0] | &a[0] | p | *p |
| a[1] | &a[1] | p+1 | *(p+1) |
| a[2] | &a[2] | p+2 | *(p+2) |### その2
```c
int a[5] = {1, 2, 3, 4, 5};
int* p = &a[2];
```| 配列 | 配列変数のアドレス | 該当するポインタ | ポインタ変数の値 |
| :----- | :------------------- | :----------------- | :--------------- |
| a[0] | &a[0] | p-2 | *(p-2) |
| a[1] | &a[1] | p-1 | *(p-1) |
| a[2] | &a[2] | p | *p |
| a[3] | &a[3] | p+1 | *(p+1) |
| a[4] | &a[4] | P+2 | *(p+2) |## メモリの4領域
| 番号 | 名称 | 説明 |
|:-----|:---------------|:-------------------------------------------|
| 1 | プログラム領域 | プログラム(マシン語)が格納される領域 |
| 2 | 静的領域 | グローバル変数や static 変数が置かれる領域 |
| 3 | ヒープ領域 | 動的に確保されたメモリを置く領域 |
| 4 | スタック領域 | ローカル変数などが置かれる領域 |