C語言數據類型及其使用 (帶示例)

目錄

1. 基本數據類型

整型

浮點型

字符型

2. 構造數據類型

數組

結構體

聯合體(共用體)

枚舉類型

3. 指針類型

4. 空類型


在 C 語言中,數據類型是非常重要的概念,它決定了數據在內存中的存儲方式、占用空間大小以及可進行的操作。C 語言的數據類型主要分為基本數據類型、構造數據類型、指針類型和空類型,下面詳細介紹:

1. 基本數據類型

基本數據類型是 C 語言中最基礎的數據類型,是構建其他復雜數據類型的基石。

整型
  • int
    • 說明:用于表示整數,在不同的編譯器和系統環境下,其占用的字節數可能不同。一般在 32 位和 64 位系統中,int?通常占用 4 個字節(32 位),取值范圍大約是 -2147483648 到 2147483647。
    • 代碼示例
#include <stdio.h>
int main() {int num = 123;printf("整數: %d\n", num);return 0;
}
  • short(短整型)
    • 說明:通常占用 2 個字節(16 位),取值范圍比?int?小,大約是 -32768 到 32767。
    • 代碼示例
#include <stdio.h>
int main() {short s = 100;printf("短整型: %hd\n", s);return 0;
}
  • long(長整型)
    • 說明:在 32 位系統中,long?通常占用 4 個字節;在 64 位系統中,一般占用 8 個字節(64 位)。其取值范圍比?int?更大。
    • 代碼示例
#include <stdio.h>
int main() {long l = 123456789L;printf("長整型: %ld\n", l);return 0;
}
  • long long(更長的長整型)
    • 說明:至少占用 8 個字節,能表示更大范圍的整數,取值范圍大約是 -9223372036854775808 到 9223372036854775807。
    • 代碼示例
#include <stdio.h>
int main() {long long ll = 123456789012345LL;printf("更長的長整型: %lld\n", ll);return 0;
}
浮點型
  • float(單精度浮點型)
    • 說明:用于表示小數,通常占用 4 個字節,能提供大約 6 - 7 位有效數字。
    • 代碼示例
#include <stdio.h>
int main() {float f = 3.14f;printf("單精度浮點型: %f\n", f);return 0;
}
  • double(雙精度浮點型)
    • 說明:占用 8 個字節,能提供大約 15 - 16 位有效數字,精度比?float?更高。
    • 代碼示例
#include <stdio.h>
int main() {double d = 3.1415926;printf("雙精度浮點型: %lf\n", d);return 0;
}
字符型
  • char
    • 說明:用于表示單個字符,占用 1 個字節。實際上存儲的是字符的 ASCII 碼值。
    • 代碼示例
#include <stdio.h>
int main() {char ch = 'A';printf("字符: %c\n", ch);printf("字符的ASCII碼值: %d\n", ch);return 0;
}

2. 構造數據類型

構造數據類型是由基本數據類型或其他構造數據類型組合而成的數據類型。

數組
  • 說明:是一組相同類型元素的有序集合。數組的大小在定義時需要確定,其元素可以通過下標訪問。
  • 代碼示例
#include <stdio.h>
int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("arr[%d] = %d\n", i, arr[i]);}return 0;
}
結構體
  • 說明:可以將不同類型的數據組合在一起,形成一個新的數據類型。結構體中的每個成員可以有不同的數據類型。
  • 代碼示例
#include <stdio.h>
// 定義結構體
struct Student {char name[20];int age;float score;
};int main() {struct Student s = {"Tom", 20, 85.5};printf("姓名: %s\n", s.name);printf("年齡: %d\n", s.age);printf("成績: %f\n", s.score);return 0;
}
聯合體(共用體)
  • 說明:聯合體的所有成員共享同一塊內存空間,同一時間只能使用其中一個成員。
  • 代碼示例
#include <stdio.h>
// 定義聯合體
union Data {int i;float f;char str[20];
};int main() {union Data data;data.i = 10;printf("整型值: %d\n", data.i);data.f = 3.14f;printf("浮點型值: %f\n", data.f);return 0;
}
枚舉類型
  • 說明:用于定義一組具有離散整數值的常量。枚舉類型的每個枚舉常量都對應一個整數值,默認從 0 開始遞增。
  • 代碼示例
#include <stdio.h>
// 定義枚舉類型
enum Weekday {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
};int main() {enum Weekday today = WEDNESDAY;printf("今天是一周中的第 %d 天(從0開始計數)\n", today);return 0;
}

3. 指針類型

  • 說明:指針是一種特殊的數據類型,用于存儲變量的內存地址。通過指針可以間接訪問和修改該地址處存儲的數據。
  • 代碼示例
#include <stdio.h>
int main() {int num = 10;int *ptr = &num;  // 定義一個指向整型變量的指針,并初始化為num的地址printf("變量num的值: %d\n", num);printf("指針ptr指向的值: %d\n", *ptr);*ptr = 20;  // 通過指針修改num的值printf("修改后變量num的值: %d\n", num);return 0;
}

4. 空類型

  • 說明void?表示空類型,主要用于以下幾種情況:
    • 函數返回值為空,如?void func()
    • 函數參數為空,如?int func(void)
    • 定義通用指針,如?void *ptr,可以指向任意類型的數據,但在使用時需要進行類型轉換。
  • 代碼示例
#include <stdio.h>
// 函數返回值為空
void printMessage() {printf("這是一個無返回值的函數。\n");
}// 函數參數為空
int getValue(void) {return 100;
}int main() {printMessage();int val = getValue();printf("getValue函數返回的值: %d\n", val);int num = 20;void *ptr = &num;  // 定義一個void指針int *intPtr = (int *)ptr;  // 類型轉換printf("通過void指針訪問的值: %d\n", *intPtr);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70956.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70956.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70956.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web自動化之Selenium添加網站Cookies實現免登錄

在使用Selenium進行Web自動化時&#xff0c;添加網站Cookies是實現免登錄的一種高效方法。通過模擬瀏覽器行為&#xff0c;我們可以將已登錄狀態的Cookies存儲起來&#xff0c;并在下次自動化測試或爬蟲任務中直接加載這些Cookies&#xff0c;從而跳過登錄步驟。 Cookies簡介 …

NAT 技術:網絡中的 “地址魔術師”

目錄 一、性能瓶頸&#xff1a;NAT 的 “阿喀琉斯之踵” &#xff08;一&#xff09;數據包處理延遲 &#xff08;二&#xff09;高并發下的性能損耗 二、應用兼容性&#xff1a;NAT 帶來的 “適配難題” &#xff08;一&#xff09;端到端通信的困境 &#xff08;二&…

php序列化與反序列化

文章目錄 基礎知識魔術方法&#xff1a;在序列化和反序列化過程中自動調用的方法什么是 __destruct() 方法&#xff1f;何時觸發 __destruct() 方法&#xff1f;用途&#xff1a;語法示例&#xff1a; 反序列化漏洞利用前提條件一些繞過策略繞過__wakeup函數繞過正則匹配繞過相…

docker 占用系統空間太大了,整體遷移到掛載的其他磁盤|【當前普通用戶使用docker時,無法指定鏡像、容器安裝位置【無法指定】】

文章目錄 前言【核心步驟皆為 大模型生成的方案】總結步驟應該是&#xff1a;詳細步驟如下1. **停止 Docker 服務**2. **備份原數據&#xff08;防止遷移失敗&#xff09;**3. **遷移數據到新磁盤**4. **修改 Docker 配置文件**5. **重啟 Docker 服務**6. **驗證容器和鏡像**7.…

設計后端返回給前端的返回體

目錄 1、為什么要設計返回體&#xff1f; 2、返回體包含哪些內容&#xff08;如何設計&#xff09;&#xff1f; 舉例 3、總結 1、為什么要設計返回體&#xff1f; 在設計后端返回給前端的返回體時&#xff0c;通常需要遵循一定的規范&#xff0c;以確保前后端交互的清晰性…

Springboot 自動化裝配的原理

Springboot 自動化裝配的原理 SpringBoot 主要作用為&#xff1a;起步依賴、自動裝配。而為了實現這種功能&#xff0c;SpringBoot 底層主要使用了 SpringBootApplication 注解。 首先&#xff0c;SpringBootApplication 是一個復合注解&#xff0c;它結合了 Configuration、…

基于vue框架的游戲博客網站設計iw282(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能&#xff1a;用戶,博客信息,資源共享,游戲視頻,游戲照片 開題報告內容 基于FlaskVue框架的游戲博客網站設計開題報告 一、項目背景與意義 隨著互聯網技術的飛速發展和游戲產業的不斷壯大&#xff0c;游戲玩家對游戲資訊、攻略、評測等內容的需求日…

算法-二叉樹篇13-路徑總和

路徑總和 力扣題目鏈接 題目描述 給你二叉樹的根節點 root 和一個表示目標和的整數 targetSum 。判斷該樹中是否存在 根節點到葉子節點 的路徑&#xff0c;這條路徑上所有節點值相加等于目標和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否則&#xff0c;返回…

8. 示例:對32位數據總線實現位寬和值域覆蓋

文章目錄 前言示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;仿真與覆蓋率分析覆蓋點詳細說明覆蓋率提升技巧常見錯誤排查 示例四&#xff1a;仿真步驟 前言 針對32位數據總線實現位寬和值域的覆蓋&#xff0c;并且能夠用xrun運行&#xff0c;查看日志和波形。cover…

TDengine 中的數據庫

數據庫概念 時序數據庫 TDengine 中數據庫概念&#xff0c;等同于關系型數據庫 MYSQL PostgreSQL 中的數據庫&#xff0c;都是對資源進行分割管理的單位。 TDengine 數據庫與關系型數據庫最大區別是跨庫操作&#xff0c;TDengine 數據庫跨庫操作除了少量幾個SQL 能支持外&…

開源電商項目、物聯網項目、銷售系統項目和社區團購項目

以下是推薦的開源電商項目、物聯網項目、銷售系統項目和社區團購項目&#xff0c;均使用Java開發&#xff0c;且無需付費&#xff0c;GitHub地址如下&#xff1a; ### 開源電商項目 1. **mall** GitHub地址&#xff1a;[https://github.com/macrozheng/mall](https://git…

如何設計一個短鏈系統?

短鏈系統設計的關鍵要點: 系統功能實現 短鏈生成:接收長鏈接,先檢查是否已有對應短鏈,存在則直接返回。否則,使用分布式 ID 生成器(如號段模式、SnowFlake 算法、數據庫自增 ID、Redis 自增等)生成唯一 ID,或通過哈希算法(如 MurmurHash)處理長鏈接得到哈希值。再將生…

數據結構(初階)(三)----單鏈表

單鏈表 概念 概念&#xff1a;鏈表是?種物理存儲結構上?連續、?順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。 結點 與順序表不同的是&#xff0c;鏈表的結構類似于帶車頭的火車車廂&#xff0c;&#xff0c;鏈表的每個車廂都是獨立…

游戲引擎學習第129天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 小妙招: vscode:定位錯誤行 一頓狂按F8 重構快捷鍵:F2 重構相關的變量 回顧并為今天的內容做準備 今天的工作主要集中在渲染器的改進上&#xff0c;渲染器現在運行得相當不錯&#xff0c;得益于一些優化和組織上的改進。我們計…

文字描邊實現內黃外綠效果

網頁使用 <!DOCTYPE html> <html> <head> <style> .text-effect {color: #ffd700; /* 黃色文字 */-webkit-text-stroke: 2px #008000; /* 綠色描邊&#xff08;兼容Webkit內核&#xff09; */text-stroke: 2px #008000; /* 標準語法 *…

yolov8 目標追蹤 (源碼 +效果圖)

1.在代碼中 增加了s鍵開始追蹤 e鍵結束追蹤 顯示移動距離(代碼中可調標尺和像素的比值 以便接近實際距離) 2.繪制了監測區域 只在區域內的檢測 3.規定了檢測的類別 只有人類才繪制軌跡 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

2.5 運算符2

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的 2.5.3 賦值運算符 賦值運算符將值存儲在左操作數指定的對象中。有兩種賦值操作&#xff1a; 1、簡單賦值&#xff0c;使用。其中第二…

地彈與振鈴

地彈&#xff08;Ground Bounce&#xff09;和振鈴&#xff08;Ringing&#xff09;是數字電路中常見的信號完整性問題&#xff0c;兩者都與高速開關和寄生參數有關&#xff0c;但表現形式和成因不同。以下是它們的對比及解決方法&#xff1a; 1. 地彈&#xff08;Ground Bounc…

解決Deepseek“服務器繁忙,請稍后再試”問題,基于硅基流動和chatbox的解決方案

文章目錄 前言操作步驟步驟1&#xff1a;注冊賬號步驟2&#xff1a;在線體驗步驟3&#xff1a;獲取API密鑰步驟4&#xff1a;安裝chatbox步驟5&#xff1a;chatbox設置 價格方面 前言 最近在使用DeepSeek時&#xff0c;開啟深度思考功能后&#xff0c;頻繁遇到“服務器繁忙&am…

二十三種設計模式

2 工廠方法模式 工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 在工廠模式中&#xff0c;我們在創建對象時不會對客戶端暴露創建邏輯&#xff0c;并且是通…