关于数据存储的那些事1
數(shù)據(jù),異父異母的親兄弟?
Part1:數(shù)據(jù)類型 內(nèi)置 自定義 構(gòu)造 意義 內(nèi)存空間 視角
C語言數(shù)據(jù)類型大致可以分為兩類,內(nèi)置類型:char,int,long,long long,float,double
自定義類型,也稱為構(gòu)造類型。這些類型有什么意義呢?想象一下,我們有一堆數(shù)據(jù),要把他們存放到電腦里邊去,電腦只有010101010??? ……的信號,可以用二進制來表示,但二進制表示又太長了,于是用16進制來表示它們。整數(shù)的問題解決了,但是小數(shù)和符號要如何存放呢?
有人就想出來了一個法子:我們可以用不同的規(guī)則來存放它們,自己設計一套算法將小數(shù)轉(zhuǎn)換為整數(shù)存放進去,同時用某種方法標記這個數(shù)據(jù),讓我們知道這是一個小數(shù),使用它時再根據(jù)算法轉(zhuǎn)換為小數(shù)輸出,而且這些可以讓電腦執(zhí)行,我們只需要有一套算法就可以,現(xiàn)在小數(shù)問題解決了,符號該怎么辦?嘿,既然小數(shù)可以用整數(shù)存放,符號為什么不行呢?我們將所有符號收集起來,以某種順序排成一列,然后依次給它們用整數(shù)從0開始編號,再存放進電腦,同時標記:這里存放的是是符號。
現(xiàn)在如何存的問題解決了,新的問題來了:每次都存多大呢?有些整數(shù)需要很大的空間才能存放進去,是不是每次要放東西都需要很大一塊空間呢?當然不是這樣,不然的話電腦就只能存一點點數(shù)據(jù)了,不要忘了人,如果要存一個很大很大的數(shù)據(jù),人怎么會不知道它很大呢?是的,人能分辨大部分大的數(shù)據(jù),我們現(xiàn)在已經(jīng)將整型,字符型,浮點型(小數(shù)),分類了,要處理這個問題,只需要在每個類別的基礎上在繼續(xù)分類就可以了。所以類型的意義就是方便存放數(shù)據(jù)。
Part2:
unsigned ?signed 整形 -1 大小 省int 浮點型
知道數(shù)據(jù)類型分類后,來看一下它們,整形分為
Int:最基礎的
Short:這個就是我們知道他很小,不用那么多空間,就搞了一個short規(guī)則放小的整數(shù),原本是這個樣子的:“short int” 為了方便就省略它了。
Long和long long:這個和short一樣產(chǎn)生的了,之前說過了
char:是不是很驚訝?字符型怎么到整形里邊來了,之前說過,對符號進行編號,再將編號存入計算機中,怎么存入?直接用整形的方法存入就可以了嘛,只需要額外標記一下這個是字符。如果你用%d輸出,他會給你一個整形,用%c,他會給你那個整形對應的字符,當然只有少部分整數(shù)擁有這個“特權(quán)”。
接下來是浮點型:
float:原來是表示浮點型的,后來double出來后,就被它奪權(quán)了,在小數(shù)界地位大減,表示單精度浮點型
double:精度更高,表示雙精度浮點型
最后說一下signed和unsigned,有無符號,這個看過去很容易想到ASCII中的符號,其實這只是正負符號。Signed,在一字節(jié)中,用第一位的0或1來表示該數(shù)據(jù)的正負相較于unsigned,其大小減半,但在數(shù)軸上長度不變(類似于0<x<2和-1<x<+1)。
part3:
構(gòu)造 數(shù)組 結(jié)構(gòu)體 枚舉 聯(lián)合 指針 特殊 空 返回 參數(shù) 指針
構(gòu)造類型:
數(shù)組類型:之前有說過sizeof(arr)與&arr是整個數(shù)組的地址,指針進行加減是一個數(shù)組一個數(shù)組跳過的,是不是有點類型那味了,
結(jié)構(gòu)體,枚舉,聯(lián)合,后續(xù)再學
指針類型是一個特殊的類型,回想一下數(shù)據(jù)進來需要哪些特性:空間,形式(規(guī)則)。指針類型的空間大小是固定的(初學者c指針那里有說過),其內(nèi)的數(shù)據(jù)是存儲單元的編號,也就是16進制編成的地址,指針自己也是分類型的,int*,char*,意義在之前也說過了。類型和值的關(guān)系值得琢磨一下,有值的存在才有了類型的分類。
空類型:什么都沒有,沒有值,也就沒有形式,沒有空間。常見于函數(shù)返回值,函數(shù)參數(shù),指針類型。空指針類型,就是沒有定義int*,char*之類的,意義就呼之欲出了。
總結(jié)
以上是生活随笔為你收集整理的关于数据存储的那些事1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记——一个指针有趣的问题
- 下一篇: 数据存储的那些事2