解析C語言中的sizeof

字號:

一、sizeof的概念
    sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它并不是函數(shù)。sizeof操作符以字節(jié)形式給出了其操作數(shù)的存儲(chǔ)大小。操作數(shù)可以是一個(gè)表達(dá)式或括在括號內(nèi)的類型名。操作數(shù)的存儲(chǔ)大小由操作數(shù)的類型決定。
    二、sizeof的使用方法
    1、用于數(shù)據(jù)類型
    sizeof使用形式:sizeof(type)
    數(shù)據(jù)類型必須用括號括住。如sizeof(int)。
    2、用于變量
    sizeof使用形式:sizeof(var_name)或sizeof var_name
    變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括號的用法更普遍,大多數(shù)程序員采用這種形式。
    注意:sizeof操作符不能用于函數(shù)類型,不完全類型或位字段。不完全類型指具有未知存儲(chǔ)大小的數(shù)據(jù)類型,如未知存儲(chǔ)大小的數(shù)組類型、未知內(nèi)容的結(jié)構(gòu)或聯(lián)合類型、void類型等。
    如sizeof(max)若此時(shí)變量max定義為int max(),sizeof(char_v) 若此時(shí)char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。
    三、sizeof的結(jié)果
    sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保證能容納實(shí)現(xiàn)所建立的對象的字節(jié)大小。
    1、若操作數(shù)具有類型char、unsigned char或signed char,其結(jié)果等于1。
    ANSI C正式規(guī)定字符類型為1字節(jié)。
    2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double類型的sizeof 在ANSI C中沒有具體規(guī)定,大小依賴于實(shí)現(xiàn),一般可能分別為2、2、2、2、4、4、4、8、10。