【C语言进阶深度学习记录】一 数据类型的本质与变量的本质
今天學(xué)習(xí)C語言中的數(shù)據(jù)類型的本質(zhì)與變量的本質(zhì)
文章目錄
- 1 什么是數(shù)據(jù)類型
- 2 變量的本質(zhì)
- 3 數(shù)據(jù)類型與變量的關(guān)系
- 4 自定義數(shù)據(jù)類型與創(chuàng)建變量
- 5 總結(jié)
1 什么是數(shù)據(jù)類型
- 數(shù)據(jù)類型可以理解為固定內(nèi)存大小的別名
- 數(shù)據(jù)類型是創(chuàng)建變量的模子
如同下面的圖示,各個(gè)數(shù)據(jù)類型是代表了某一個(gè)固定大小的內(nèi)存,數(shù)據(jù)類型是這塊內(nèi)存的別名。
然后,當(dāng)我們要?jiǎng)?chuàng)建一個(gè)變量時(shí),就使用上述的基本數(shù)據(jù)類型為模子,產(chǎn)生一個(gè)新的變量,如下圖所示:
這些新的變量,是根據(jù)基本數(shù)據(jù)類型這個(gè)模子,來刻畫變量所占用的內(nèi)存空間的大小。
2 變量的本質(zhì)
變量的本質(zhì)是什么?
- 變量是一段實(shí)際連續(xù)存儲(chǔ)空間的別名,注意與基本數(shù)據(jù)類型的不同,基本數(shù)據(jù)類型是一段連續(xù)存儲(chǔ)空間的別名,但是它不是任何一個(gè)實(shí)際的存儲(chǔ)空間,它相當(dāng)于一種規(guī)則。
- 程序中通過變量來申請(qǐng)并命名存儲(chǔ)空間,
- 申請(qǐng)存儲(chǔ)空間后,使用變量的名字可以使用該存儲(chǔ)空間
如下圖所示,即,i,j,k為普通的變量(在這里是int類型的變量),p也是一個(gè)變量,但是它是指針變量(指針后面會(huì)深度學(xué)習(xí))
3 數(shù)據(jù)類型與變量的關(guān)系
-
上面的學(xué)習(xí)中發(fā)現(xiàn),變量可以看成是數(shù)據(jù)類型的一種具體化。變量所對(duì)應(yīng)的數(shù)據(jù)類型,它們兩個(gè)所占用存儲(chǔ)空間的字節(jié)數(shù)是相等的。具體看下面的例子:
-
1-1.c
編譯運(yùn)行程序:
- gcc 1-1.c
- ./a.out
運(yùn)行結(jié)果為:
4 自定義數(shù)據(jù)類型與創(chuàng)建變量
我們還可以自定義數(shù)據(jù)類型,然后使用自定義的數(shù)據(jù)類型來創(chuàng)建變量。如下代碼:
1-2.c
#include <stdio.h>typedef int INT32; typedef unsigned char BYTE; typedef struct _tag_ts {BYTE b1;BYTE b2;short s;INT32 i; } TS;int main() {INT32 i32;BYTE b;TS ts;printf("%d, %d\n", sizeof(INT32), sizeof(i32));printf("%d, %d\n", sizeof(BYTE), sizeof(b));printf("%d, %d\n", sizeof(TS), sizeof(ts));return 0; }- 編譯運(yùn)行的結(jié)果為:
5 總結(jié)
- 數(shù)據(jù)類型的本質(zhì)是一個(gè)模子
- 數(shù)據(jù)類型代表需要占用內(nèi)存的大小
- 變量的本質(zhì)是一段內(nèi)存的別名
- 變量隸屬于某一種數(shù)據(jù)類型
- 變量所在的內(nèi)存的大小取決于其所屬的數(shù)據(jù)類型的大小
總結(jié)
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】一 数据类型的本质与变量的本质的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科为计算机配置ip命令,cisco路由
- 下一篇: 最新的一些开源face alignmen