首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言陷阱:sizeof 計算陣列大小與元素個數的區別

     編輯:關於C語言

核心區別

概念含義計算方式
陣列大小佔用記憶體位元組數sizeof(array)
元素個數陣列中元素數量sizeof(array)/sizeof(array[0])

實例驗證

#include <stdio.h>
#include <string.h>

#define SIZE 7
typedef struct { int age; char *name; char flag; } Person;

int main() {
    int    a1[SIZE];
    char   a2[SIZE];
    Person a3[SIZE];

    printf("int 陣列: 大小=%zu, 元素=%zu\n", sizeof(a1), sizeof(a1)/sizeof(int));
    printf("char 陣列: 大小=%zu, 元素=%zu, strlen=%zu\n", sizeof(a2), sizeof(a2)/sizeof(char), strlen(a2));
    printf("Person 陣列: 大小=%zu, 元素=%zu\n", sizeof(a3), sizeof(a3)/sizeof(Person));
    return 0;
}

輸出(64 位系統)

int 陣列: 大小=28, 元素=7
char 陣列: 大小=7, 元素=7, strlen=7
Person 陣列: 大小=84, 元素=7

常見錯誤

直接用 sizeof(array) 作為迴圈次數,導致越界或邏輯錯誤。務必除以單個元素大小。

字符串特例

char 陣列若以 '\0' 結尾,strlen 返回有效字符長度,可能小於陣列大小。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved