C言語の基本概念
環境を整える
私が使用する継承開発環境は Visual Studio 2022 (略して VS 2022) の
ダウンロード リンクです
1. ソースファイルとヘッダファイル
C 言語
ソース ファイルの拡張子は .c (注: C++ ソース ファイルの拡張子は .cpp)、
ヘッダー ファイルの拡張子は .h
2. コンパイルとリンク
C 言語のソース コード自体は単純なテキスト ファイルであり、C 言語コードは .c 接尾辞が付いたファイルに配置されます。
通過しなければなりませんコンパイルそしてリンクその後、実行可能ファイルになり、実行できるようになります。
テキスト ファイル自体は実行できないため、渡す必要があります。コンパイラの翻訳そしてリンカーリンク、バイナリ実行可能ファイルを生成すると、その実行可能ファイルを実行できるようになります。
3. 初めてのC言語プログラム
//头文件 没有头文件无法解析对应的库函数(例:printf()函数)
//std-标准 i-input输入 o-output输出
#include <stdio.h>
//c语言代码中一定要有main函数,main函数也叫主函数
//main函数是程序的入口,都从main函数的第一行代码开始
int main() {
//main函数里面写代码
//每段代码后面都要加上 ;
printf("hello c语言!");
//return 0结尾
return 0;
}
//运行快捷键 ctrl + f5 或者 fn + ctrl + f5
4. main()関数について
1. C 言語コードは main 関数から実行を開始します。
2. main 関数は main 関数とも呼ばれます。main 関数はプログラムのエントリ ポイントです。
3. プロジェクトには複数の .c ファイルが存在できます。ただし、メイン関数は 1 つだけです(プログラムへの入り口は1つしかないため)
5. printf()ライブラリ関数について
機能: 文字列を出力および印刷し、他のタイプのデータを出力および印刷することもできます (フォーマットされた出力)
前提条件:ヘッダー ファイルstdio.hが導入されている必要があります
#include <stdio.h>
int main() {
//printf是一个库函数,专门用来打印数据
printf("hello c!");//打印字符串
//利用格式字符串输出(根据占位符决定数据类型)
printf("%d\n",100);//打印整型
printf("%f\n",100.01);//打印浮点型(默认保留至小数点后6位)
printf("%s\n","你好!");//打印字符串
printf("%c\n",'c');// 打印字符
return 0;
}
出力結果:
文字と文字列の違いと注意事項
1. 文字には一重引用符「 」を使用します。
2. 文字列には二重引用符「 " を使用します
。 3. 漢字は 2 文字を占めるため、単一の漢字を文字の形式で出力すると、文字化けしてしまいます。
6. キーワードの紹介
キーワードは、その名前が示すように、非常に重要な単語です。C 言語では、さまざまなデータ型 (int、long、float、char など) の定義や、重要な特別な意味を持ついくつかのキーワードなど、主に文法の一部を構成します。 . (if、while、do、for など)。
注: ロゴを作成する場合、キーワードと同じ名前を付けることはできません。
C言語の32個のキーワードは以下の通りです。
7.文字およびASCIIエンコーディング
C 言語の文字は一重引用符で囲まれます
ASCII エンコーディングの意味:
コンピュータ内のすべてのデータはバイナリ形式で保存されます。私たち一人ひとりがこれらの文字ごとにバイナリ シーケンスをコンパイルする場合、これをエンコーディングと呼びます。目的としては、誰もが互いに通信するのに便利でしたその後、米国規格協会 (ANSI) は標準の ASCII エンコーディングを導入し、C 言語の文字は ASCII エンコーディング方式に従いました。
いくつかの一般的な ASCII コード
. 文字 AZ の ASCII コード値の
範囲は 65 ~ 90. 文字 az の ASCII コード値の範囲は 97 ~ 122.
対応する大文字と小文字 (a と A) の ASCII コード値の違いは次のとおりです。 32(文字小文字+32=文字大文字)
0~9の数字のASCIIコード値は48~57の範囲にあり、
このうちASCIIコードの値は0~31の範囲にあります。この32文字は表示できない文字
0 ~ 31 この 32 文字は、表示できない操作機能に対応します。
特定の ASCII テーブルについては、https://www.runoob.com/w3cnote/ascii.htmlを参照してください。
8. 文字列と /0
文字列
の定義: 二重引用符で囲まれた文字列を文字列と呼びます。
プレースホルダーの書式設定: %s
以下は文字列を出力します。表面上はわずか 6 文字に見えますが、監視を開始します。
int main() {
printf("abcdef");
return 0;
}
監視の観点から見ると、この文字列は実際には合計 7 文字であり、末尾に追加の\0エスケープ文字があります。
C 言語では、文字列の末尾にエスケープ文字 \0 が隠されており、\0 が文字列の終了マークとなります。
文字列と\0の関係
int main() {
//arr1 可以将字符串放到字符的数组中
char arr1[] = "abc";//abc
//arr2 将3个字符放入字符数组中
char arr2[] = {
'a','b','c'};
//arr3 用转义 \0 将字符串隔开
char arr3[] = "abc\0ddd";
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
出力結果:
分析:
arr1 は abc、normal を出力します。
arr2 が abc を出力した後には、大量のコンテンツがあります。配列 arr2 が abc を出力した後、これは文字列ではないため、最後に出力を停止する \0 文字
マークメモリ内にある「ジャンク ダーティ コンテンツ」と呼ばれるものです。 「すべて印刷されています。
arr3をabcに出力すると\0マークに触れるので印刷が止まります。
arr2 配列を変更し、配列の最後の要素の後に文字 \0 を追加します。
int main() {
//如果在arr2数组在结尾添加一个 \0 转义字符
char arr2[] = {
'a','b','c','\0'};//此时输出完abc即刻停止
printf("%s\n", arr2);
return 0;
}
9. エスケープ文字
名前が示すように、エスケープとは意味を変更することを意味します。エスケープ文字の明らかな特徴は、前にバックスラッシュが付いていることです (\n 改行など)。
\n を例に挙げます。
\ が追加される前は、n は単なる文字であり、
n に \ が追加された後は、\n が改行操作を表します。
int main()
{
printf("a\nb");
return 0;
}
また、上記の文字列にある \0 もエスケープ文字で、文字 0 に \ を追加すると \0 になります。\0 は、文字列の終わりの識別子という新しい意味です。
以下は一般的に使用されるエスケープ文字です。
エスケープ文字 | 意義 |
---|---|
\\ | バックスラッシュ \ 記号を表します |
「 | 「文字内の二重引用符」 |
\' | 文字「'」内の単一引用符を示します。 |
\n | 改行文字 |
\t | タブ文字。カーソルは次の水平タブ位置 (通常は次の 8 の倍数) に移動します。 |
\b | Backspace キー、カーソルは 1 文字戻りますが、文字は削除されません |
\v | 垂直区切り記号。カーソルは次の垂直タブストップに移動します。通常は次の行と同じ列です。 |
10. strlen()関数について
機能: 文字列の長さを計算します。
int main() {
//计算字符串的长度,直到空结束字符,但不包括空结束字符。
int len = strlen("c:\test\123.c");//这里调式执行后结果为9,但是监视结果为10(监视把\0转义字符算上了)
printf("%d\n", len);
return 0;
}
エスケープ文字に注意してください。エスケープ文字は 1 文字としてカウントされます,c:\tエスt\123.c(黄色のマークの部分は 1 文字としてカウントされます。つまり、\t は 1 文字としてカウントされ、\123 は 1 文字としてカウントされます。)
\ddd: ddd は 8 進数を表します
デバッグ結果:
監視結果:
\0が含まれているため監視結果は10件ありましたが、strlen() には、終了識別子文字 \0 が含まれません。