2019年3月7日星期四 陰轉(zhuǎn)多云
今天天氣依舊挺好的哇,有陽(yáng)光。(我想問(wèn)一下多云和晴的界限到底是啥?我感覺(jué)是晴天氣預(yù)報(bào)說(shuō)多云。)
早上出門(mén)的時(shí)候很冷。
昨天晚上心情有點(diǎn)down,所以沒(méi)學(xué)多少C語(yǔ)言,今天繼續(xù)學(xué)習(xí)啊。
(聲明,理論知識(shí)部分全部來(lái)自菜鳥(niǎo)教程?。?/code>
今日學(xué)習(xí)內(nèi)容:(上接C語(yǔ)言基礎(chǔ)知識(shí)學(xué)習(xí)2)
(3)標(biāo)識(shí)符
C 標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量、函數(shù),或任何其他用戶(hù)自定義項(xiàng)目的名稱(chēng)。
一個(gè)標(biāo)識(shí)符以字母 A-Z 或 a-z 或下劃線(xiàn) _ 開(kāi)始,后跟零個(gè)或多個(gè)字母、下劃線(xiàn)和數(shù)字(0-9)。
C 標(biāo)識(shí)符內(nèi)不允許出現(xiàn)標(biāo)點(diǎn)字符,比如 @、$ 和 %。C 是區(qū)分大小寫(xiě)的編程語(yǔ)言。
9、關(guān)鍵字
下表列出了 C 中的保留字。這些保留字不能作為常量名、變量名或其他標(biāo)識(shí)符名稱(chēng)。
| 關(guān)鍵字 | 說(shuō)明 |
|---|---|
| auto | 聲明自動(dòng)變量 |
| break | 跳出當(dāng)前循環(huán) |
| case | 開(kāi)關(guān)語(yǔ)句分支 |
| char | 聲明字符型變量或函數(shù)返回值類(lèi)型 |
| const | 聲明只讀變量 |
| continue | 結(jié)束當(dāng)前循環(huán),開(kāi)始下一輪循環(huán) |
| default | 開(kāi)關(guān)語(yǔ)句中的"其它"分支 |
| do | 循環(huán)語(yǔ)句的循環(huán)體 |
| double | 聲明雙精度浮點(diǎn)型變量或函數(shù)返回值類(lèi)型 |
| else | 條件語(yǔ)句否定分支(與 if 連用) |
| enum | 聲明枚舉類(lèi)型 |
| extern | 聲明變量或函數(shù)是在其它文件或本文件的其他位置定義 |
| float | 聲明浮點(diǎn)型變量或函數(shù)返回值類(lèi)型 |
| for | 一種循環(huán)語(yǔ)句 |
| goto | 無(wú)條件跳轉(zhuǎn)語(yǔ)句 |
| if | 條件語(yǔ)句 |
| int | 聲明整型變量或函數(shù) |
| long | 聲明長(zhǎng)整型變量或函數(shù)返回值類(lèi)型 |
| register | 聲明寄存器變量 |
| return | 子程序返回語(yǔ)句(可以帶參數(shù),也可不帶參數(shù)) |
| short | 聲明短整型變量或函數(shù) |
| signed | 聲明有符號(hào)類(lèi)型變量或函數(shù) |
| sizeof | 計(jì)算數(shù)據(jù)類(lèi)型或變量長(zhǎng)度(即所占字節(jié)數(shù)) |
| static | 聲明靜態(tài)變量 |
| struct | 聲明結(jié)構(gòu)體類(lèi)型 |
| switch | 用于開(kāi)關(guān)語(yǔ)句 |
| typedef | 用以給數(shù)據(jù)類(lèi)型取別名 |
| unsigned | 聲明無(wú)符號(hào)類(lèi)型變量或函數(shù) |
| union | 聲明共用體類(lèi)型 |
| void | 聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類(lèi)型指針 |
| volatile | 說(shuō)明變量在程序執(zhí)行中可被隱含地改變 |
| while | 循環(huán)語(yǔ)句的循環(huán)條件 |
C99新增關(guān)鍵字

C11新增關(guān)鍵字

10、C 中的空格
只包含空格的行,被稱(chēng)為空白行,可能帶有注釋?zhuān)珻 編譯器會(huì)完全忽略它。
在 C 中,空格用于描述空白符、制表符、換行符和注釋。
空格分隔語(yǔ)句的各個(gè)部分,讓編譯器能識(shí)別語(yǔ)句中的某個(gè)元素(比如 int)在哪里結(jié)束,下一個(gè)元素在哪里開(kāi)始。
(簡(jiǎn)單來(lái)說(shuō)就是關(guān)鍵字與其他的代碼要有空格來(lái)讓編譯器識(shí)別出來(lái),不然關(guān)鍵字可能不能起到該有的作用。)
11、C 數(shù)據(jù)類(lèi)型
在 C 語(yǔ)言中,數(shù)據(jù)類(lèi)型指的是用于聲明不同類(lèi)型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)。變量的類(lèi)型決定了變量存儲(chǔ)占用的空間,以及如何解釋存儲(chǔ)的位模式。
| 序號(hào) | 類(lèi)型與描述 |
|---|---|
| 1 | 基本類(lèi)型:它們是算術(shù)類(lèi)型,包括兩種類(lèi)型:整數(shù)類(lèi)型和浮點(diǎn)類(lèi)型。 |
| 2 | 枚舉類(lèi)型:它們也是算術(shù)類(lèi)型,被用來(lái)定義在程序中只能賦予其一定的離散整數(shù)值的變量。 |
| 3 | void 類(lèi)型:類(lèi)型說(shuō)明符 void 表明沒(méi)有可用的值。 |
| 4 | 派生類(lèi)型:它們包括:指針類(lèi)型、數(shù)組類(lèi)型、結(jié)構(gòu)類(lèi)型、共用體類(lèi)型和函數(shù)類(lèi)型。 |
數(shù)組類(lèi)型和結(jié)構(gòu)類(lèi)型統(tǒng)稱(chēng)為聚合類(lèi)型。函數(shù)的類(lèi)型指的是函數(shù)返回值的類(lèi)型。
(1)整數(shù)類(lèi)型
下表列出了關(guān)于標(biāo)準(zhǔn)整數(shù)類(lèi)型的存儲(chǔ)大小和值范圍的細(xì)節(jié):

注意,各種類(lèi)型的存儲(chǔ)大小與系統(tǒng)位數(shù)有關(guān),但目前通用的以64位系統(tǒng)為主。
以下列出了32位系統(tǒng)與64位系統(tǒng)的存儲(chǔ)大小的差別(windows 相同):

為了得到某個(gè)類(lèi)型或某個(gè)變量在特定平臺(tái)上的準(zhǔn)確大小,您可以使用 sizeof 運(yùn)算符。表達(dá)式 sizeof(type) 得到對(duì)象或類(lèi)型的存儲(chǔ)字節(jié)大小。下面的實(shí)例演示了獲取 int 類(lèi)型的大?。?p>
#include <stdio.h>
#include <limits.h>
int main()
{
printf("int 存儲(chǔ)大小 : %lu \n", sizeof(int));
return 0;
}
%lu 為 32 位無(wú)符號(hào)整數(shù),詳細(xì)說(shuō)明查看 C 庫(kù)函數(shù) - printf()。
當(dāng)您在 Linux 上編譯并執(zhí)行上面的程序時(shí),它會(huì)產(chǎn)生下列結(jié)果:
int 存儲(chǔ)大小 : 4
(2)浮點(diǎn)類(lèi)型
下表列出了關(guān)于標(biāo)準(zhǔn)浮點(diǎn)類(lèi)型的存儲(chǔ)大小、值范圍和精度的細(xì)節(jié):
| 類(lèi)型 | 存儲(chǔ)大小 | 值范圍 | 精度 |
|---|---|---|---|
| float | 4 字節(jié) | 1.2E-38 到 3.4E+38 | 6 位小數(shù) |
| double | 8 字節(jié) | 2.3E-308 到 1.7E+308 | 15 位小數(shù) |
| long double | 16 字節(jié) | 3.4E-4932 到 1.1E+4932 | 19 位小數(shù) |
頭文件 float.h 定義了宏,在程序中可以使用這些值和其他有關(guān)實(shí)數(shù)二進(jìn)制表示的細(xì)節(jié)。
下面的實(shí)例將輸出浮點(diǎn)類(lèi)型占用的存儲(chǔ)空間以及它的范圍值:
實(shí)例:
#include <stdio.h>
#include <float.h>
int main()
{
printf("float 存儲(chǔ)最大字節(jié)數(shù) : %d \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}
%E 為以指數(shù)形式輸出單、雙精度實(shí)數(shù),詳細(xì)說(shuō)明查看 C 庫(kù)函數(shù) - printf()。
當(dāng)您在 Linux 上編譯并執(zhí)行上面的程序時(shí),它會(huì)產(chǎn)生下列結(jié)果:
float 存儲(chǔ)最大字節(jié)數(shù) : 4
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6
(補(bǔ)充:FLT_MIN、FLT_MAX、FLT_EPSILON是C++中的定義:
/* min positive value */
#define FLT_MIN 1.175494351e-38F
/* max value */
#define FLT_MAX 3.402823466e+38F
/* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_EPSILON 1.192092896e-07F
就是定義了FLOAT所能表示的最大值,最小值,以及最小的正數(shù)。)
(3)void類(lèi)型
void 類(lèi)型指定沒(méi)有可用的值。它通常用于以下三種情況下:
| 序號(hào) | 類(lèi)型與描述 |
|---|---|
| 1 | 函數(shù)返回為空:C 中有各種函數(shù)都不返回值,或者您可以說(shuō)它們返回空。不返回值的函數(shù)的返回類(lèi)型為空。例如 void exit (int status); |
| 2 | 函數(shù)參數(shù)為空:C 中有各種函數(shù)不接受任何參數(shù)。不帶參數(shù)的函數(shù)可以接受一個(gè) void。例如 int rand(void); |
| 3 | 指針指向 void:類(lèi)型為 void * 的指針代表對(duì)象的地址,而不是類(lèi)型。例如,內(nèi)存分配函數(shù) void *malloc( size_t size ); 返回指向 void 的指針,可以轉(zhuǎn)換為任何數(shù)據(jù)類(lèi)型。 |
(這里想提一個(gè)疑問(wèn)啊,就是Markdown里面如何實(shí)現(xiàn)一個(gè)表格框內(nèi)換行呢?就像下面截圖這樣。)

摘錄別人的筆記:
常用基本數(shù)據(jù)類(lèi)型占用空間(64位機(jī)器為例):
char : 1個(gè)字節(jié)
int :4個(gè)字節(jié)
float:4個(gè)字節(jié)
double:8個(gè)字節(jié)
基本類(lèi)型書(shū)寫(xiě):
整數(shù):
a,默認(rèn)為10進(jìn)制 ,10 ,20。
b,以0開(kāi)頭為8進(jìn)制,045,021。
c.,以0b開(kāi)頭為2進(jìn)制,0b11101101。
d,以0x開(kāi)頭為16進(jìn)制,0x21458adf。
小數(shù):
單精度常量:2.3f 。
雙精度常量:2.3,默認(rèn)為雙精度。
字符型常量:用英文單引號(hào)括起來(lái),只保存一個(gè)字符'a'、'b' 、'*' ,還有轉(zhuǎn)義字符 '\n' 、'\t'。
字符串常量:用英文的雙引號(hào)引起來(lái) 可以保存多個(gè)字符:"abc"。
11、C 變量
變量其實(shí)只不過(guò)是程序可操作的存儲(chǔ)區(qū)的名稱(chēng)。C 中每個(gè)變量都有特定的類(lèi)型,類(lèi)型決定了變量存儲(chǔ)的大小和布局,該范圍內(nèi)的值都可以存儲(chǔ)在內(nèi)存中,運(yùn)算符可應(yīng)用于變量上。
變量的名稱(chēng)可以由字母、數(shù)字和下劃線(xiàn)字符組成。它必須以字母或下劃線(xiàn)開(kāi)頭。大寫(xiě)字母和小寫(xiě)字母是不同的,因?yàn)?C 是大小寫(xiě)敏感的。
有以下幾種基本的變量類(lèi)型:

C 語(yǔ)言也允許定義各種其他類(lèi)型的變量,比如枚舉、指針、數(shù)組、結(jié)構(gòu)、共用體等等。
(1)C 中的變量定義
變量定義就是告訴編譯器在何處創(chuàng)建變量的存儲(chǔ),以及如何創(chuàng)建變量的存儲(chǔ)。變量定義指定一個(gè)數(shù)據(jù)類(lèi)型,并包含了該類(lèi)型的一個(gè)或多個(gè)變量的列表,如下所示:
type variable_list;
在這里,type 必須是一個(gè)有效的 C 數(shù)據(jù)類(lèi)型,可以是 char、w_char、int、float、double 或任何用戶(hù)自定義的對(duì)象,variable_list 可以由一個(gè)或多個(gè)標(biāo)識(shí)符名稱(chēng)組成,多個(gè)標(biāo)識(shí)符之間用逗號(hào)分隔。
變量可以在聲明的時(shí)候被初始化(指定一個(gè)初始值)。初始化器由一個(gè)等號(hào),后跟一個(gè)常量表達(dá)式組成。
下面列舉幾個(gè)實(shí)例:
extern int d = 3, f = 5; // d 和 f 的聲明與初始化
int d = 3, f = 5; // 定義并初始化 d 和 f
byte z = 22; // 定義并初始化 z
char x = 'x'; // 變量 x 的值為 'x'
不帶初始化的定義:帶有靜態(tài)存儲(chǔ)持續(xù)時(shí)間的變量會(huì)被隱式初始化為 NULL(所有字節(jié)的值都是 0),其他所有變量的初始值是未定義的。
最后說(shuō)幾句昨天留下來(lái)的提問(wèn)吧。
今天和同學(xué)們?nèi)フ覅抢蠋熼_(kāi)會(huì)之后她和我們嘮嗑,我才知道原來(lái)她是工作了八年才考研到大學(xué)里面,然后繼續(xù)讀博,最后當(dāng)大學(xué)老師到現(xiàn)在。在這過(guò)程中她自己一直在不斷學(xué)習(xí),之間還學(xué)了個(gè)啥電子做衣服,嗯我不知道做啥的,但是很厲害的樣子。她告訴我們,不管是在工作還是讀研,不管怎么樣都要一直學(xué)習(xí),她就算當(dāng)老師也是一直每天都要抽時(shí)間來(lái)自己學(xué)習(xí),也說(shuō)在學(xué)習(xí)上留下了很多疑問(wèn)和難題,希望能夠把這些疑問(wèn)和難題解決掉,不留遺憾。
聽(tīng)完這些感覺(jué)很是敬佩啊,以前大家都說(shuō)她教書(shū)有些晦澀之類(lèi)的,我想和她工作了八年相當(dāng)于比別人晚八年有關(guān)吧,所以可能有點(diǎn)欠缺。但是不是每個(gè)人工作八年后都有勇氣去考研,也不是每個(gè)人都能夠考上,她現(xiàn)在也是很厲害的啊。
不管怎么樣,努力都是必要的?。?/p>
2019年3月7日