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