C語言數據類型本質分析

2022-01-05 嵌入式職場
1、數據類型概念:

類型是對數據的抽象,類型相同的數據在內存中有同樣的存儲格式、表現形式。在一段程序中,所用到的數據一定屬於某一個類型。

2、數據類型本質

數據類型可以理解成創建變量的模具,是固定大小內存的別名。
數據類型的作用:編譯器預算對象分配內存空間大小。
例如:求數據類型的大小。
位:」位(bit)」是電子計算機中最小的數據單位。每一位的狀態只能是0或1。
字節:8個二進位位構成1個」字節(Byte)」,它是存儲空間的基本計量單位。1個字節可以儲存1個英文字母或者半個漢字,換句話說,1個漢字佔據2個字節的存儲空間。
字:」字」由若干個字節構成,字的位數叫做字長,不同檔次的機器有不同的字長。例如一臺8位機,它的1個字就等於1個字節,字長為8位。如果是一臺16位機,那麼,它的1個字就由2個字節構成,字長為16位。字是計算機進行數據處理和運算的單位。

#include <stdio.h>

void main(){
    int m;
    int n[5];
    char str;
    printf("int a:%d\n", sizeof(m));
    printf("int n:%d\n", sizeof(n));
    printf("int n[0]:%d\n", sizeof(n[0]));
    printf("int str:%d\n", sizeof(str));
}

結果:

int a:4
int n:20
int n[0]:4
int str:1

字符型整型浮點型3、數據類型別名(1)使用關鍵字 typedef

使用關鍵字 typedef 可以為類型起一個新的別名,語法格式為:
typedef oldName newName;
oldName 是類型原來的名字,newName 是類型新的名字。

#include <stdio.h>
typedef int u32;
typedef char CHAR;

void main(){
    printf("%d\n", sizeof(u32));
    printf("%d\n", sizeof(CHAR));
}

(2)用宏定義(#define)

用宏定義(#define)來進行數據類型別名。

#include <stdio.h>
#define u32 int
#define CHAR char

void main(){
    printf("%d\n", sizeof(u32));
    printf("%d\n", sizeof(CHAR));
}

(3) 關鍵字 typedef 和預處理器指令 #define 的區別

#define 是 C 的預處理器指令,也稱之為 C 指令,用於為各種數據類型定義別名,與關鍵字 typedef 類似,但是它們有以下幾點不同:

typedef 僅限於自定義數據類型標識符的別名,#define 不僅可以為數據類型定義別名,也能為實際的數值定義別名。

typedef 是由編譯器處理的,#define 語句是由預處理器進行處理的。

4、數據類型的封裝

(1)void的字面意思是「無類型」,void* 則為「無類型指針」,void* 可以指向任何類型的數據。
(2)數據類型封裝
典型的如內存操作函數memcpy和memset的函數原型分別為:

void * memcpy(void *dest, const void *src, size_t len);

void * memset ( void * buffer, int c, size_t num ); 

void修飾函數返回值和參數,僅表示無。
如果函數沒有返回值,那麼應該將其聲明為void型
如果函數沒有參數,應該聲明其參數為void
(3)void指針意義
C語言規定只有相同類型的指針才可以相互賦值。
void*指針作為左值用於「接收」任意類型的指針。
void*指針作為右值賦值給其它指針時需要強制類型轉換。
C語言沒有定義void究竟是多大內存的別名。
數據類型本質是固定內存大小的別名;是個模具,c語言規定:通過數據類型定義變量。
數據類型大小計算(sizeof)。
數據類型封裝概念(void 萬能類型)。

相關焦點

  • C語言入門級教程:基礎數據類型與基本算法,學編程從此刻開始!
    今天帶大家了解一下學C語言必備的基本數據類型和基本算法,適合剛學C以及零基礎的小夥伴! 話不多說,我們一起來學習吧~ 數據類型 ● 基本類型 基本類型就是我們在使用C語言時最基礎的數據類型,包括整形(短整型,基本整型,長整型)、字符型、浮點型(單、雙精度)以及枚舉類型。
  • C語言的數據類型簡述
    C語言數據類型分類C語言數據類型分類C語言的數據分類:1.基本類型:整型類型包含:基本整型(int)、短整型(short int)、長整型(long int)、雙長整型(long long int)、字符型(char)和布爾型(bool)。註:整型數據可在類型符號前面加修飾符:signed(有符號整數類型)和unsigned(無符號整數類型),若不指定則默認為「有符號類型」。
  • R語言數據實戰 | R中的數據類型
    第一章介紹了R語言的概貌,下面將以一個簡單的電影票房實際數據為例,介紹在實際數據處理中R語言中的基本類型、基本操作。在電影的宣傳期,往往能看到其主演、導演頻頻現身各大頭條,吸引看客眼球,最後的落腳點往往是「祝***電影票房大賣」。
  • 「程序猿計劃」C語言的數據類型
    今天我和程序喵要來講講C語言的數據類型。程序喵……咦?程序喵:呼……呼……科技喵:(我竟無言以對)那……就讓我來先講講程序的主要組成吧!因此,應該列為:算法+數據結構+程序設計方法+語言工具和開發環境=程序(確認過眼神,是你不懂的東西)也就是說,要想寫程序,必須要掌握以上四個方面。本期課程將帶大家了解標準C,請勿與C++搞混。(我知道了,C++是C語言加C語言加C語言!)
  • C語言指針的正確打開方式!
    摘要:一直覺得C語言較其他語言最偉大的地方就是C語言中的指針,有些人認為指針很簡單,而有些人認為指針很難,當然這裡的對簡單和難並不是等價於對指針的理解程度。為此作者在這裡對C語言中的指針進行全面的總結,從底層的內存分析,徹底讓讀者明白指針的本質。
  • C語言新增stdint.h頭文件的討論什麼是快類型什麼是小類型
    如果程式設計師希望寫出可移植的C語言程序,首先最重要的一點是不能假定位寬。C語言標準並沒有明確指定的 short、int、long 等類型的位寬,因此可能在某些平臺 sizeof(int) 等於 2,在其他平臺 sizeof(int) 等於 4,所以如果編寫的C語言代碼假定 sizeof(int) 是一個固定值,顯然就屬於不可移植的代碼。
  • R語言數據實戰 | 文本分析
    我們學習語言的最開始就是認「字」,這也是文本的基礎。進而是詞語,每一個詞語都可視為簡單文本。所以,要想分析好文本數據,首先需要能夠得心應手地處理最基本的字詞。這一節,我們以一個網絡小數的數據集,向大家展示簡單文本的分析方法。最近幾年,躥紅速度最快的應該就是各類層出不窮的網絡劇了。
  • C語言結構體字節對齊
    C語言結構體字節對齊是老生常談的問題了,也是高頻面試題,現在我們來深入研究這個問題,徹底弄懂到底是怎麼回事,給你一個結構體定義和平臺機器位數就能手動計算出結構體佔用字節數,現在我們不使用宏#pragma pack,採用默認字節對齊方式。先拋出結論:好了,現在我們直接寫個小程序驗證並分析是否真是這樣一回事。
  • keil C語言與彙編語言混合編程
    有參數傳遞的函數調用 記住哦,c文件和A51文件不能使用同一個文件名,不過我還不知道為什麼會這樣,有高手知道得話請告知。 今天說說帶參數傳遞的函數調用,在C51和彙編之間傳遞參數的方式有兩種,一種是通過寄存器傳遞參數,C51中不同類型的實參會存入相應的寄存器,在彙編中只需對相應寄存器進行操作,即達到傳遞參數的目的。
  • 我用Excel發現了數據分析的本質:回歸分析
    最近很多人都問我,為什麼感覺數據分析越學越亂,經常是學了一大堆名詞,真正遇到問題的時候卻更多是直接套用模型,很難將這些理論聯繫起來。這其實就回歸到了一個至關重要的問題:數據分析的本質是什麼?事物都是萬變不離其宗的,一切外在的方法都是為了事物本質而服務的,數據分析自然也不例外,今天我們就來探討一下數據分析的本質。
  • C語言基礎知識整理
    4、在{  }裡面每一句話後面都有一個分號(;),在c語言中,我們把以一個分號結尾的一句話叫做一個c語言的語句,分號是語句結束的標誌。這一行沒有分號,所以不是語句,在c語言中稱之為命令行,或者叫做「預編譯處理命令」。
  • C語言基礎(下)
    C語言的世界結構體類型什麼是結構體我們觀察現實世界的時候,可以發現很多的東西它都是由不同的部分組合起來的可以理解成是對現實世界的抽象結構體不僅可以記錄不同類型的數據,而且使得數據結構是「高內聚,低耦合」的,更利於程序的閱讀理解和移植,而且結構體的存儲方式可以提高CPU對內存的訪問速度。
  • C語言中的變量存儲類型static老手都這樣用
    請看正文C語言中的變量有哪些存儲類型,你還記得嗎?static老手都這樣用。1、 先來回顧C語言變量C語言中變量值的存儲位置有兩類:CPU的寄存器和內存。變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。
  • C語言---判斷三角形的類型
    #include <stdio.h>#include <math.h>int main(){    float a,b,c;//定義三個變量儲存三角形的三條邊    float s,mj;//儲存三角形的面積    printf("請輸入三角形的三條邊:\n");    scanf("%f,%f,%f",
  • 單片機c語言教程:建立你的第一個KeilC51項目
    KEIL uVISION2 是眾多單片機應用開發軟體中優秀的軟體之一,它支持眾多不一樣公司的MCS51架構的晶片,它集編輯,編譯,仿真等於一體,同時還支持,PLM,彙編和C語言的程序設計,它的界面和常用的微軟 VC++的界面相似,界面友好,易學易用,在調試程序,軟體仿真方面也有很強大的功能。本站提供的單片機c語言教程都是基於keilc51的。
  • 單片機程式語言的比較
    由於單片機的種種優點和特性,其應用領域極其廣泛。單片機系統同樣也由硬體系統和軟體系統構成,因此涉及到程序的編寫問題。單片機的程式語言很多,大致分成三類:機器語言、彙編語言、高級語言。機器語言由於繁瑣容易出錯,一般用戶已經不再使用。下面分別對彙編語言和最常用的高級語言進行分析。
  • 學員問:C語言入門要掌握哪些基礎知識?
    01C語言程序的結構認識用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。4、在{ }裡面每一句話後面都有一個分號(;),在c語言中,我們把以一個分號結尾的一句話叫做一個c語言的語句,分號是語句結束的標誌。
  • R語言 PCA主成分分析
    問題或建議,請公眾號留言;R語言 PCA主成分分析前言統計學背景知識協方差相關係數函數總結實例講解1.載入原始數據2.作主成分分析3.結果解讀4.畫主成分的碎石圖並預測5.PCA結果繪製後記前言PCA分析大家肯定經常看到,但是你真的懂PCA分析的結果嗎?圖我也會看,我只是不是很清楚PCA背後輸出結果的解讀而已。
  • R語言學習:數據整理
    01 數據整理在實際數據科學工作中,原始數據因為各種因素,通常是不符合或者不滿足我們分析與建模需求的。此時,我們需要花費較多時間來做數據整理工作。數據整理工作,會遇到這些內容:1 數據的重塑2 數據的合成3 字符數據處理4 日期數據處理等數據的重塑,可以理解為把數據重新格式化,便於開展後續工作。至於是長數據轉換為寬數據,還是寬數據轉換為長數據,我們需要具體問題具體分析了。
  • 單片機的程式語言:彙編語言、C語言、PL/M和BASIC語言
    BASIC語言除了能進行科學計算和數據處理外,還能進行字符處理、圖形處理、音樂演奏等。因此BASIC語言不僅適用於科學計算,也適用於事務管理、計算機輔助教學和遊戲編程等方面。(4)執行方式靈活。BASIC語言提供兩種執行方式,分別是程序執行方式和命令執行方式。