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

詳解C語(yǔ)言中數(shù)據(jù)的存儲(chǔ)

 更新時(shí)間:2021年11月19日 11:16:28   作者:C宇言  
這篇文章主要為大家介紹了C語(yǔ)言中數(shù)據(jù)的存儲(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

一、類(lèi)型歸類(lèi)

對(duì)于基本的c語(yǔ)言數(shù)據(jù)類(lèi)型的基本歸類(lèi)

1、整形家族

char (內(nèi)存存儲(chǔ)的為ascall碼值,存儲(chǔ)為整數(shù))
  unsigned char//   unsigned為無(wú)符號(hào)關(guān)鍵字 
     signe char//
short 
   unsigned short (int)// (int )表示int可以省略不寫(xiě)
     signed short  (int)
int
    unsigned int
     signed int
long
    unsigned  long (int)
     signed long   (int)

2、浮點(diǎn)型家族

float
double

3、指針類(lèi)型

int* ptr;
char* pa;
float* pf;
void* pv;

4、空類(lèi)型

void 表示空類(lèi)型(無(wú)類(lèi)型)

通常應(yīng)用于函數(shù)的返回類(lèi)型,返回參數(shù),指針類(lèi)型

二、類(lèi)型的意義

1.占據(jù)的內(nèi)存大小

2.作為數(shù)據(jù)時(shí)所操作的大小(即為數(shù)據(jù)看待類(lèi)型的視角)

三、數(shù)據(jù)在類(lèi)型中存儲(chǔ)(以整形和浮點(diǎn)型為例子)

1. 關(guān)于 存儲(chǔ)的基本概念

計(jì)算機(jī)的(整形)有符號(hào)數(shù),有三種表示方法,原碼,反碼,補(bǔ)碼

三種表示方法 均存在 符號(hào)位 和 數(shù)值位 兩部分,符號(hào)位的‘0'表正,‘1'表示負(fù),數(shù)值位表示方法有差異(對(duì)于無(wú)符號(hào)數(shù):原,反,補(bǔ)表示相同)

原碼:直接將數(shù)字按照正負(fù),用二進(jìn)制方法翻譯表示;

反碼:將原碼的符號(hào)位不變,其他位按位取反;

補(bǔ)碼:反碼+1;

對(duì)于正數(shù)而言,原,反,補(bǔ)相同:

int a=20;
// 00000000 00000000 00000000 00010100 原碼
// 00000000 00000000 00000000 00010100 反碼
// 00000000 00000000 00000000 00010100 補(bǔ)碼

對(duì)于負(fù)數(shù)而言

int a=-1;
// 10000000 00000000 00000000 00001010 原碼
// 11111111 11111111 11111111 11110101 反碼
// 11111111 11111111 11111111 11110110 補(bǔ)碼

對(duì)于整形數(shù)據(jù)而言再內(nèi)存存儲(chǔ)的是補(bǔ)碼

2.存儲(chǔ)模式

1.大端模式(大端字節(jié)序模式):較高的有效字節(jié)存儲(chǔ)在較低的存儲(chǔ)器地址,較低的有效字節(jié)存儲(chǔ)在較高的存儲(chǔ)器地址。

2.小端模式(小端字節(jié)序模式):較低的有效字節(jié)存儲(chǔ)在較低的存儲(chǔ)器地址,較高的有效字節(jié)存儲(chǔ)在較高的存儲(chǔ)器地址。

地址的視圖

低-------------------------------->--------高

關(guān)于設(shè)計(jì)判斷當(dāng)前機(jī)器的字節(jié)序

int check_sys(void)
{
    int a=1;
    char* p=(char*)&a;//訪問(wèn)第一個(gè)字節(jié)序看是     01.....0  還是 0...01
    return *p;
}
int main()
{
    int ret=check_sys();
    if(ret==1)
        printf("小端");
    else
        printf("大端");
}

在這里強(qiáng)制轉(zhuǎn)化成(char*)利用他只訪問(wèn)一個(gè)字節(jié)的視角進(jìn)行觀測(cè)

指針類(lèi)型的意義

1.指針類(lèi)型決定了指針類(lèi)型解引用操作符能訪問(wèn)幾個(gè)字節(jié)

2.指針+類(lèi)型決定了指針+1跳過(guò)幾個(gè)字節(jié)

四.應(yīng)用

應(yīng)用前應(yīng)掌握的基本概念 整形提升

1.

char a=-1;
//  -1作為整形數(shù)在內(nèi)存中以補(bǔ)碼形式存儲(chǔ)
// 10000000 00000000 00000000 0000001-原碼
// 11111111 11111111 11111111 1111110 - 反碼
// 11111111 11111111 11111111 1111111 -補(bǔ)碼
// 當(dāng)被賦予a時(shí) a為char型只能存儲(chǔ)8個(gè)字節(jié) 就要發(fā)生 截?cái)?
// 即 a 存儲(chǔ)為 1111111
signed char b=-1;
// sigend為默認(rèn)關(guān)鍵字 聲明和聲明都默認(rèn)為有符號(hào)
// 同理 b 1111111
unsigned char c=-1;
// c 1111111將高位當(dāng)做數(shù)值位對(duì)待
printf("%d %d %d ",a,b,c);
//       -1  -1  255
// 當(dāng)要打印為%d 應(yīng)當(dāng)發(fā)生整形提升 
//  負(fù)數(shù)為有符號(hào)型 整形提升高位補(bǔ)1;
// 無(wú)符號(hào)型提升高位補(bǔ)0,將原高位看作數(shù)值位
//  將 計(jì)算過(guò)程的  補(bǔ)碼   轉(zhuǎn)換為原碼后即為所求結(jié)果

2.

char a=-128;
printf("%u\n",a);

char a=-128;
//10000000 00000000 00000000 10000000
//11111111 11111111 11111111 01111111
//11111111 11111111 11111111 10000000
// 截?cái)?0000000
// char a 有符號(hào) 按符號(hào)位提升
//整形提升  11111111 11111111 11111111 10000000
作為 無(wú)符號(hào)數(shù) 原反補(bǔ)相同
//11111111 11111111 11111111 10000000-轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)

對(duì)于char范圍的討論

有符號(hào)的(以下均為補(bǔ)碼)

有符號(hào)char范圍 -128 --127

例題

char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf("%d",strlen(a));

對(duì)于 a[i]的計(jì)算結(jié)果 從 -1......-128..127....1 0

所以所得結(jié)果為 128+127=255

無(wú)符號(hào)(同補(bǔ)碼)

最高位視為數(shù)值位則 范圍為 0 ---255

例題

unsigned char i=0;
for(i=0;i<255;i++)
{
   printf(" hello\n");
}

思路同上

程序陷入死循環(huán)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 判斷一個(gè)數(shù)是不是素?cái)?shù)的方法

    判斷一個(gè)數(shù)是不是素?cái)?shù)的方法

    判斷一個(gè)數(shù)是不是素?cái)?shù)的方法,需要的朋友可以參考一下
    2013-03-03
  • OpenCV選擇圖像中矩形區(qū)域并保存

    OpenCV選擇圖像中矩形區(qū)域并保存

    這篇文章主要為大家詳細(xì)介紹了OpenCV選擇圖像中矩形區(qū)域并保存的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹(shù)及其遍歷

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹(shù)及其遍歷

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之線索二叉樹(shù)及其遍歷的相關(guān)資料,為了加快查找節(jié)點(diǎn)的前驅(qū)和后繼。對(duì)二叉樹(shù)的線索化就是對(duì)二叉樹(shù)進(jìn)行一次遍歷,在遍歷的過(guò)程中檢測(cè)節(jié)點(diǎn)的左右指針是否為空,如果是空,則將他們改為指向前驅(qū)和后繼節(jié)點(diǎn)的線索,需要的朋友可以參考下
    2017-08-08
  • 使用C語(yǔ)言實(shí)現(xiàn)掃雷小游戲

    使用C語(yǔ)言實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了使用C語(yǔ)言實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語(yǔ)言 詳細(xì)講解#pragma的使用方法

    C語(yǔ)言 詳細(xì)講解#pragma的使用方法

    #pragma 指令對(duì)每個(gè)編譯器給出了一個(gè)方法,在保持與C和C++語(yǔ)言完全兼容的情況下,給出主機(jī)或操作系統(tǒng)專有的特征。依據(jù)定義,編譯指示是機(jī)器或操作系統(tǒng)專有的, 且對(duì)于每個(gè)編譯器都是不同的
    2022-04-04
  • C語(yǔ)言實(shí)現(xiàn)的猴子偷桃之類(lèi)算法

    C語(yǔ)言實(shí)現(xiàn)的猴子偷桃之類(lèi)算法

    本文給大家分享的是前些日子去面試的時(shí)候的試題,哎,真是沒(méi)想到會(huì)出這么個(gè)題,好多年沒(méi)碰過(guò)C了。。。。分享給大家,小伙伴們過(guò)來(lái)參觀下吧。
    2015-03-03
  • 淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇

    淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇

    下面小編就為大家?guī)?lái)一篇淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C語(yǔ)言中指針的加減運(yùn)算方法示例

    C語(yǔ)言中指針的加減運(yùn)算方法示例

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中指針的加減運(yùn)算的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Qt?QString的使用實(shí)現(xiàn)

    Qt?QString的使用實(shí)現(xiàn)

    本文主要介紹了Qt?QString的使用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語(yǔ)言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法

    C語(yǔ)言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法

    這篇文章主要介紹了C語(yǔ)言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09

最新評(píng)論

恩施市| 张家川| 渭源县| 玉环县| 城市| 江源县| 武夷山市| 临沧市| 吉安县| 印江| 双柏县| 崇文区| 靖宇县| 揭阳市| 平果县| 水城县| 定兴县| 大名县| 甘德县| 隆德县| 昆明市| 湘阴县| 尖扎县| 呼玛县| 安顺市| 苍山县| 东乡| 咸阳市| 信宜市| 凭祥市| 揭西县| 安平县| 饶平县| 友谊县| 和静县| 当涂县| 廊坊市| 余干县| 稷山县| 英超| 延吉市|