最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深度解析C語言中數(shù)據(jù)的存儲

 更新時間:2022年05月24日 14:24:02   作者:愛彈吉他的小奔同學  
本文詳細介紹了C語言中數(shù)據(jù)的存儲,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

在VS編譯器里有release和debug兩種形式,debug包含調(diào)試信息,release不包含調(diào)試信息,并會對程序進行優(yōu)化

int main()
{
	int i = 0;
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	for (i = 0; i <= 12; i++)
	{
		arr[i] = 0;
		printf("hehe\n");
	}
	
	return 0;
}

運行這個程序,結(jié)果是死循環(huán)打印hehe,為什么呢?

我們看內(nèi)存

在循環(huán)到第13次時,把存儲變量i的地方改為0,i<=12仍成立,形成死循環(huán)

這是debug下出現(xiàn)的情況,但是如果是release的配置下,就不會出現(xiàn)上面死循環(huán)的情況,原因在下面這個圖里

在debug配置下,儲存i變量的地址比儲存arr數(shù)組的地址高,可能會越界到i的地址導致死循環(huán)

在release配置下,儲存i變量的地址比儲存arr數(shù)組的地址低,不會出現(xiàn)越界到i導致死循環(huán)

(如果你非寫一個死循環(huán)那就真的死循環(huán)了,release優(yōu)化沒有那么萬能)

數(shù)據(jù)類型介紹

類型 大小(單位為字節(jié))
char (字符數(shù)據(jù)類型)1
short (短整型)2
int (整形)4
long (長整型)4或8
long long (更長的整形)8
float (單精度浮點數(shù))4
double (雙精度浮點數(shù))8

long long是在C99增加的

long的大小和環(huán)境有關,32位平臺上是4個字節(jié),64位平臺上是8個字節(jié)

這些都是C中內(nèi)置的數(shù)據(jù)類型

類型的意義:

使用這個類型開辟內(nèi)存空間的大小(大小決定了使用范圍)

看待內(nèi)存空間的視角

1就是不同類型可以開辟不同大小的內(nèi)存空間

對于2,看下圖理解

類型的基本歸類

整型家族

char
   unsigned char
   signed char
short
   unsigned short [int]
   signed short [int]
int
   unsigned int
   signed int
long
   unsigned long [int]
   signed long [int]

在C99后又加了long long

long long
   unsigned long long [int]
   signed long long [int]

這些都是整型家族里的數(shù)據(jù)類型,都分有符號和無符號類型

為什么說字符數(shù)據(jù)類型也是整型呢?

因為字符的本質(zhì)其實是ASCII 碼值,是整型,所以劃分到整型家族

一般我們都默認不加unsigned或signed的默認為是有符號的,但是char就有點特殊

char里有三個

  • char
  • signed char
  • unsigned char

signed char就是有符號的char,unsigned char就是無符號的char,但是什么都不加的char是有符號的還是無符號的標準是未定義的,取決于編譯器的實現(xiàn),跟編譯器有關

其他都不加的int,short,long等都是默認為有符號的

那么為什么會有unsigned和signed之分呢?

因為生活中本來就有很多數(shù)據(jù)是沒有負數(shù)的,比如身高,體重,長度

也有很多數(shù)據(jù)是有正負之分的,比如溫度,放出或吸收熱量

所以我們需要用unsigned和signed來區(qū)分是否有正負之分

舉例子

int a = 10;

a是整型,有符號的整型,一個整型4個字節(jié),即32個bit

0000 0000 0000 0000 0000 0000 0000 1010 (原碼)

int a = -10;

1000 0000 0000 0000 0000 0000 0000 1010(原碼)

符號位上,0表示正數(shù),1表示負數(shù),而且符號位不算有效位,只表示正負

有符號的int可以存 (-231)~(231-1)大小的數(shù)字

unsigned int a = -10;

1111 1111 1111 1111 1111 1111 0110(-10的補碼)

無符號的int可以存0~232大小的數(shù)

因此,對于有正負的數(shù),我們就用有符號的signed

對于沒有正負之分的數(shù),我們就用無符號的unsigned

浮點數(shù)家族

(只要表示小數(shù)就可以使用浮點型)

 float
 double

float精度低,存儲的數(shù)值范圍較小

double精度高,存儲的數(shù)值范圍較大

構(gòu)造類型

數(shù)組類型

例如:

                      類型
int arr1[5];    ——>  int [5]
int arr2[8];    ——>  int [8]
char arr3[5]    ——>  char [5]

結(jié)構(gòu)體類型

struct

枚舉類型

enum

聯(lián)合類型

union

指針類型

int *pi;
char *pc;
float* pf;
void* pv;

空類型

void 表示空類型(無類型)

通常應用于函數(shù)的返回類型、函數(shù)的參數(shù)、指針類型

舉一個例子

void test(void);
//第一個void  表示函數(shù)不會返回值
//第二個void  表示函數(shù)不需要傳任何參數(shù)

void*
//void用于指針類型,以后會詳細講解

以上就是深度解析C語言中數(shù)據(jù)的存儲的詳細內(nèi)容,更多關于C語言數(shù)據(jù)存儲的資料請關注腳本之家其它相關文章!

相關文章

  • 解析C++編程中的bad_cast異常

    解析C++編程中的bad_cast異常

    這篇文章主要介紹了C++編程中的bad_cast異常,bad_cast異常通常出現(xiàn)于表達式中類型轉(zhuǎn)換錯誤時等一些場景,需要的朋友可以參考下
    2016-01-01
  • C++實現(xiàn)簡易圖書館管理系統(tǒng)

    C++實現(xiàn)簡易圖書館管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡易圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 一篇文章帶你了解C++特殊類的設計

    一篇文章帶你了解C++特殊類的設計

    這篇文章主要為大家詳細介紹了C++特殊類的設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語言中的八大排序算法詳解

    C語言中的八大排序算法詳解

    這篇文章主要介紹了C語言中的八大排序算法詳解,所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作,需要的朋友可以參考下
    2023-07-07
  • 用C++編寫擴展node.js(node-ffi版)

    用C++編寫擴展node.js(node-ffi版)

    今天小編就為大家分享一篇關于用C++編寫擴展node.js(node-ffi版),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C?語言輸入輸出庫函數(shù)講解(最新推薦)

    C?語言輸入輸出庫函數(shù)講解(最新推薦)

    輸入輸出函數(shù)能夠讓程序和用戶或者文件進行交互,這篇文章主要介紹了C?語言輸入輸出庫函數(shù)講解,需要的朋友可以參考下
    2025-04-04
  • C++實現(xiàn)LeetCode(59.螺旋矩陣之二)

    C++實現(xiàn)LeetCode(59.螺旋矩陣之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(59.螺旋矩陣之二),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 模擬實現(xiàn)C語言中的內(nèi)存管理

    模擬實現(xiàn)C語言中的內(nèi)存管理

    這篇文章主要內(nèi)容是模擬C語言中的內(nèi)存管理,需要的朋友可以參考下
    2015-07-07
  • C++實現(xiàn)隨機生成迷宮地牢

    C++實現(xiàn)隨機生成迷宮地牢

    這篇文章主要介紹了C++實現(xiàn)隨機生成迷宮地牢的相關資料及代碼分享,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟

    VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟

    本文主要介紹了VScode配置cuda開發(fā)環(huán)境的實現(xiàn)步驟,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07

最新評論

如皋市| 高密市| 昆明市| 渝北区| 左云县| 旺苍县| 赣州市| 泾阳县| 汶川县| 门头沟区| 什邡市| 拉萨市| 巴彦淖尔市| 房山区| 银川市| 双流县| 肇州县| 黄骅市| 东山县| 漳平市| 泗洪县| 河池市| 改则县| 汪清县| 辉县市| 宣威市| 鲁山县| 山东省| 阿勒泰市| 南充市| 马鞍山市| 东安县| 汾阳市| 康马县| 改则县| 五寨县| 祁东县| 临洮县| 图木舒克市| 淳化县| 诸城市|