
- C 語言程式設計教程
- C 語言 - 首頁
- C 語言基礎
- C 語言 - 概述
- C 語言 - 特性
- C 語言 - 歷史
- C 語言 - 環境搭建
- C 語言 - 程式結構
- C 語言 - Hello World
- C 語言 - 編譯過程
- C 語言 - 註釋
- C 語言 - 詞法單元
- C 語言 - 關鍵字
- C 語言 - 識別符號
- C 語言 - 使用者輸入
- C 語言 - 基本語法
- C 語言 - 資料型別
- C 語言 - 變數
- C 語言 - 整數提升
- C 語言 - 型別轉換
- C 語言 - 型別強制轉換
- C 語言 - 布林值
- C 語言中的常量和字面量
- C 語言 - 常量
- C 語言 - 字面量
- C 語言 - 轉義序列
- C 語言 - 格式說明符
- C 語言中的運算子
- C 語言 - 運算子
- C 語言 - 算術運算子
- C 語言 - 關係運算符
- C 語言 - 邏輯運算子
- C 語言 - 位運算子
- C 語言 - 賦值運算子
- C 語言 - 一元運算子
- C 語言 - 自增和自減運算子
- C 語言 - 三元運算子
- C 語言 - sizeof 運算子
- C 語言 - 運算子優先順序
- C 語言 - 其他運算子
- C 語言中的決策語句
- C 語言 - 決策語句
- C 語言 - if 語句
- C 語言 - if...else 語句
- C 語言 - 巢狀 if 語句
- C 語言 - switch 語句
- C 語言 - 巢狀 switch 語句
- C 語言中的迴圈語句
- C 語言 - 迴圈語句
- C 語言 - while 迴圈
- C 語言 - for 迴圈
- C 語言 - do...while 迴圈
- C 語言 - 巢狀迴圈
- C 語言 - 無限迴圈
- C 語言 - break 語句
- C 語言 - continue 語句
- C 語言 - goto 語句
- C 語言中的函式
- C 語言 - 函式
- C 語言 - 主函式
- C 語言 - 按值呼叫函式
- C 語言 - 按引用呼叫函式
- C 語言 - 巢狀函式
- C 語言 - 可變引數函式
- C 語言 - 使用者自定義函式
- C 語言 - 回撥函式
- C 語言 - 返回語句
- C 語言 - 遞迴
- C 語言中的作用域規則
- C 語言 - 作用域規則
- C 語言 - 靜態變數
- C 語言 - 全域性變數
- C 語言中的陣列
- C 語言 - 陣列
- C 語言 - 陣列的特性
- C 語言 - 多維陣列
- C 語言 - 將陣列傳遞給函式
- C 語言 - 從函式返回陣列
- C 語言 - 變長陣列
- C 語言中的指標
- C 語言 - 指標
- C 語言 - 指標和陣列
- C 語言 - 指標的應用
- C 語言 - 指標運算
- C 語言 - 指標陣列
- C 語言 - 指向指標的指標
- C 語言 - 將指標傳遞給函式
- C 語言 - 從函式返回指標
- C 語言 - 函式指標
- C 語言 - 指向陣列的指標
- C 語言 - 指向結構體的指標
- C 語言 - 指標鏈
- C 語言 - 指標與陣列的區別
- C 語言 - 字元指標和函式
- C 語言 - 空指標
- C 語言 - void 指標
- C 語言 - 懸空指標
- C 語言 - 解引用指標
- C 語言 - 近指標、遠指標和巨指標
- C 語言 - 指標陣列的初始化
- C 語言 - 指標與多維陣列的區別
- C 語言中的字串
- C 語言 - 字串
- C 語言 - 字串陣列
- C 語言 - 特殊字元
- C 語言中的結構體和聯合體
- C 語言 - 結構體
- C 語言 - 結構體和函式
- C 語言 - 結構體陣列
- C 語言 - 自引用結構體
- C 語言 - 查詢表
- C 語言 - 點 (.) 運算子
- C 語言 - 列舉 (enum)
- C 語言 - 結構體填充和打包
- C 語言 - 巢狀結構體
- C 語言 - 匿名結構體和聯合體
- C 語言 - 聯合體
- C 語言 - 位域
- C 語言 - typedef
- C 語言中的檔案處理
- C 語言 - 輸入與輸出
- C 語言 - 檔案 I/O (檔案處理)
- C 預處理器
- C 語言 - 預處理器
- C 語言 - 預處理指令
- C 語言 - 預處理器運算子
- C 語言 - 宏
- C 語言 - 標頭檔案
- C 語言中的記憶體管理
- C 語言 - 記憶體管理
- C 語言 - 記憶體地址
- C 語言 - 儲存類別
- 其他主題
- C 語言 - 錯誤處理
- C 語言 - 可變引數
- C 語言 - 命令執行
- C 語言 - 數學函式
- C 語言 - static 關鍵字
- C 語言 - 隨機數生成
- C 語言 - 命令列引數
- C 語言程式設計資源
- C 語言 - 問答
- C 語言 - 快速指南
- C 語言 - 速查表
- C 語言 - 有用資源
- C 語言 - 討論
C語言 - sizeof 運算子
sizeof 運算子是一個編譯時一元運算子。它用於計算其運算元的大小,運算元可以是資料型別或變數。它返回以位元組為單位的大小。
它可以應用於任何資料型別、浮點型別或指標型別變數。
sizeof(type or var);
當 sizeof() 用於資料型別時,它只是返回分配給該資料型別的記憶體量。在不同的機器上,輸出可能不同,例如,32 位系統顯示的輸出可能與 64 位系統不同。
示例 1:在 C 語言中使用 sizeof 運算子
請看下面的例子。它突出顯示瞭如何在 C 程式中使用 sizeof 運算子:
#include <stdio.h> int main(){ int a = 16; printf("Size of variable a: %d \n",sizeof(a)); printf("Size of int data type: %d \n",sizeof(int)); printf("Size of char data type: %d \n",sizeof(char)); printf("Size of float data type: %d \n",sizeof(float)); printf("Size of double data type: %d \n",sizeof(double)); return 0; }
輸出
執行此程式碼後,您將獲得以下輸出:
Size of variable a: 4 Size of int data type: 4 Size of char data type: 1 Size of float data type: 4 Size of double data type: 8
示例 2:將 sizeof 與結構體一起使用
在這個例子中,我們聲明瞭一個結構體型別並找到結構體型別變數的大小。
#include <stdio.h> struct employee { char name[10]; int age; double percent; }; int main(){ struct employee e1 = {"Raghav", 25, 78.90}; printf("Size of employee variable: %d\n",sizeof(e1)); return 0; }
輸出
執行程式碼並檢查其輸出:
Size of employee variable: 24
示例 3:將 sizeof 與陣列一起使用
在下面的程式碼中,我們聲明瞭一個包含 10 個 int 值的陣列。對陣列變數應用 sizeof 運算子返回 40。這是因為 int 的大小為 4 位元組。
#include <stdio.h> int main(){ int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; printf("Size of arr: %d\n", sizeof(arr)); }
輸出
執行程式碼並檢查其輸出:
Size of arr: 40
示例 4:使用 sizeof 查詢陣列的長度
在 C 語言中,我們沒有返回數值陣列中元素個數的函式(我們可以使用strlen() 函式獲取字串中的字元個數)。為此,我們可以使用sizeof() 運算子。
我們首先找到陣列的大小,然後將其除以其資料型別的大小。
#include <stdio.h> int main(){ int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int y = sizeof(arr)/sizeof(int); printf("No of elements in arr: %d\n", y); }
輸出
執行此程式碼時,它將產生以下輸出:
No of elements in arr: 10
示例 5:在動態記憶體分配中使用 sizeof
sizeof 運算子用於計算要使用malloc()和calloc()函式動態分配的記憶體塊。
malloc() 函式使用以下語法:
type *ptr = (type *) malloc(sizeof(type)*number);
以下語句分配一個包含 10 個整數的塊,並將它的地址儲存在指標中:
int *ptr = (int *)malloc(sizeof(int)*10);
當 sizeof() 用於表示式時,它返回表示式的 size。這是一個例子。
#include <stdio.h> int main(){ char a = 'S'; double b = 4.65; printf("Size of variable a: %d\n",sizeof(a)); printf("Size of an expression: %d\n",sizeof(a+b)); int s = (int)(a+b); printf("Size of explicitly converted expression: %d\n",sizeof(s)); return 0; }
輸出
執行程式碼並檢查其輸出:
Size of variable a: 1 Size of an expression: 8 Size of explicitly converted expression: 4
示例 6:C 語言中指標的大小
sizeof()運算子返回相同的值,而不管型別如何。這包括內建型別、派生型別或雙指標的指標。
#include <stdio.h> int main(){ printf("Size of int data type: %d \n", sizeof(int *)); printf("Size of char data type: %d \n", sizeof(char *)); printf("Size of float data type: %d \n", sizeof(float *)); printf("Size of double data type: %d \n", sizeof(double *)); printf("Size of double pointer type: %d \n", sizeof(int **)); }
輸出
執行程式碼並檢查其輸出:
Size of int data type: 8 Size of char data type: 8 Size of float data type: 8 Size of double data type: 8 Size of double pointer type: 8
c_operators.htm
廣告