網頁

2008年9月17日 星期三

你會用C的算子sizeof?

你會用C的算子sizeof?

56 則留言:

  1. 函式:sizeof()
    --------------------------------------------------------------------------------

    sizeof
    獲知陣列的大小。

    語法: int sizeof(array array);

    傳回值: 整數

    函式種類: 資料處理




    內容說明


    本函式以整數型態傳回陣列的元素個數。








    資料來源:
    http://www.smallway.idv.tw/phpbible/function.php?sizeof

    回覆刪除
  2. sizeof是C語言的一種單目操作符,類似與操作符++、--等。它並不是函數。

    求一個操作數所佔內存空間的大小,單位為字節。
    操作數可以是一個表達式或括在括號內的類型名。 操作数的存储大小由操作数的类型决定。 操作數的存儲大小由操作數的類型決定。

    【資料出處】
    http://translate.google.com.tw/translate?hl=zh-TW&sl=zh-CN&u=http://unix-cd.com/vc/www/23/2007-06/3093.html&sa=X&oi=translate&resnum=10&ct=result&prev=/search%3Fq%3Dsizeof%2Bc%25E8%25AA%259E%25E8%25A8%2580%26complete%3D1%26hl%3Dzh-TW

    回覆刪除
  3. 宣告陣列所估計運用的記憶體空間大小,以Bytes為單元。

    int n,a[]={7,5,3,1,2};
    n=sizeof(a)/sizeof(int);
    求a陣列元素的個數然後指定給n


    參考資料:C&C++課本

    回覆刪除
  4. B9633143

    sizeof:計算某個儲存體(記憶體)內的位元組。

    假定 int 佔 4 個位元組,sizeof(array) 傳回 32 個位元組。

    32 / 4 = 8 個元素

    所以這行程式碼可以寫成…

    length=(int)sizeof(array)/sizeof(int);

    雖然幾乎很多人使用 32 位元相同的電腦作業系統,但是有少數是使用不同的作業系統;不同的作業系統,所佔的資料位元組可能不太一樣,所以用 sizeof(int) 來替代 4 這個常數。

    資料來源:http://tw.knowledge.yahoo.com/question/question?qid=1007061805781

    回覆刪除
  5. sizeof操作符以位元組形式
    給出了其操作數的存儲大小。
    操作數可以是一個
    表達式或括在括號內的類型名。
    操作數的 存儲大小 由操 作數的類型決定 。
    也就是說利用
    sizeof計算所放入的運算元大小
    大小也會依所放入的運算元的類型而決定
    像是
    sizeof(int)=4
    參考資料

    回覆刪除
  6. B9633140

    一、sizeof的概念 
      sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以字節形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。操作數的存儲大小由操作數的類型決定。 

    二、sizeof的使用方法 
      1、用數據類型 

      sizeof使用形式:sizeof(type) 

      數據類型必須用括號括住。如sizeof(int)。 

      2、用變量 

      sizeof使用形式:sizeof(var_name)或sizeof var_name 

      變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括號的用法更普遍,大多數程序員採用這種形式。 

      注意:sizeof操作符不能用函數類型,不完全類型或位字段。不完全類型指具有未知存儲大小的數據類型,如未知存儲大小的數組類型、未知內容的結構或聯合類型、void類型等。 

      如sizeof(max)若此時變量max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。 

    資料來源:http://fanqiang.chinaunix.net/a4/b2/20010419/144336_b.html

    回覆刪除
  7. sizeof()函式來達成,宣告陣列所估用的記憶體空間大小,是以bytes為單元。
    語法:int sizeof(陣列名稱)
    sizeof(char)=1 bytes
    sizeof(int)=4 bytes

    資料來源:知城-c&c++完美的演繹

    回覆刪除
  8. B9633182

    sizeof運算子
    sizeof運算子是用來算出各種資料型態所佔用的空間(單位為bytes)

    語法
    -sizeof(資料型態)
    例如
    sizeof(a); /*取得變數a記憶體配置大小*/
    sizeof(A); /*取得字元A記憶體配置大小*/
    sizeof(double);/*取得型態double記憶體配置大小*/


    資料來源:
    http://www.ablmcc.edu.hk/~scy/CIT/easy-c.pdf

    回覆刪除
  9. 主要功能: 可以將變數或指標佔用記憶體大小值顯示出來。

    sizeof 的應用:
    在本例的利用 sizeof 來列印變數或陣列佔用記憶體的大小。



    資料來源:
    http://free.greenworld.com.tw/~dllee/csource.htm

    回覆刪除
  10. sizeof(expression) 用來在編譯時期(compile-time) 求取運算式佔有多少 Byte

    用處: 在 C++ 中可以用來製作某一種的 type traits





    例如: 測試某個 class 是否有虛擬函數, is_polymorphic<>



    參考資料: http://phpfi.com/140724

    回覆刪除
  11. sizeof()可以用來顯示資料所使用的記憶空間有幾個位元組。運算子 sizeof() 括號內的引數可以是資料,也可以是資料型態。

    參考資料

    回覆刪除
  12. sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。操作數的存儲大小由操作數的類型決定。 

    二、sizeof的使用方法

      1、用於數據類型 

      sizeof使用形式:sizeof(type) 

      數據類型必須用括號括住。如sizeof(int)。 

      2、用於變量 

      sizeof使用形式:sizeof(var_name)或sizeof var_name 

      變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括號的用法更普遍,大多數程式員採用這種形式。 

      注意:sizeof操作符不能用於函數類型,不完全類型或位字段。不完全類型指具有未知存儲大小的數據類型,如未知存儲大小的數組類型、未知內容的結構或聯合類型、void類型等。 

      如sizeof(max)若此時變量max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。 

    資料來源:http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/c/0603/768204.html

    回覆刪除
  13. B9633183提到


    用於取得實值型別的位元組大小。例如,可以取得 int 型別的大小,如下所示:
    int intSize = sizeof(int);

    sizeof 運算子只適用於實值型別,而不能用在參考型別。

    sizeof 運算子所傳回的值是 int 型別。

    sizeof 運算子只能用於 unsafe 程式碼區塊。雖然您可以使用 SizeOf 方法,但是這個方法所傳回的值不一定會等於 sizeof 所傳回的值。Marshal.SizeOf 會傳回型別經過封送處理後的大小。sizeof 則傳回已由 Common Language Runtime 配置的大小,包括任何填補。

    範例:
    // cs_operator_sizeof.cs
    // compile with: /unsafe
    using System;
    class MainClass
    {
    unsafe static void Main()
    {
    Console.WriteLine("The size of short is {0}.", sizeof(short));
    Console.WriteLine("The size of int is {0}.", sizeof(int));
    Console.WriteLine("The size of long is {0}.", sizeof(long));
    }
    }

    輸出
    The size of short is 2.
    The size of int is 4.
    The size of long is 8.

    回覆刪除
  14. 用於取得實值型別的位元組大小。例如,可以取得 int 型別的大小,如下所示:
    int intSize = sizeof(int);

    sizeof 運算子只適用於實值型別,而不能用在參考型別。

    sizeof 運算子所傳回的值是 int 型別。

    sizeof 運算子只能用於 unsafe 程式碼區塊。雖然您可以使用 SizeOf 方法,但是這個方法所傳回的值不一定會等於 sizeof 所傳回的值。Marshal.SizeOf 會傳回型別經過封送處理後的大小。sizeof 則傳回已由 Common Language Runtime 配置的大小,包括任何填補。

    範例:
    // cs_operator_sizeof.cs
    // compile with: /unsafe
    using System;
    class MainClass
    {
    unsafe static void Main()
    {
    Console.WriteLine("The size of short is {0}.", sizeof(short));
    Console.WriteLine("The size of int is {0}.", sizeof(int));
    Console.WriteLine("The size of long is {0}.", sizeof(long));
    }
    }

    輸出
    The size of short is 2.
    The size of int is 4.
    The size of long is 8.


    資料來源:http://msdn.microsoft.com/zh-tw/library/eahchzkf(VS.80).aspx

    回覆刪除
  15. C# 語言參考
    sizeof (C# 參考)

    用於取得實值型別的位元組大小。例如,可以取得 int 型別的大小,如下所示:

    int intSize = sizeof(int);
    範例

    // cs_operator_sizeof.cs
    // compile with: /unsafe
    using System;
    class MainClass
    {
    unsafe static void Main()
    {
    Console.WriteLine("The size of short is {0}.", sizeof(short));
    Console.WriteLine("The size of int is {0}.", sizeof(int));
    Console.WriteLine("The size of long is {0}.", sizeof(long));
    }
    }

    輸出
    The size of short is 2.
    The size of int is 4.
    The size of long is 8.

    資料來源:
    http://msdn.microsoft.com/zh-tw/library/eahchzkf(VS.80).aspx

    回覆刪除
  16. C語言有一個指令叫做sizeof, 可以用來看每個型態會佔用多少位元.
    #include < stdio.h >

    struct Person
    {
    char name[80];
    int height;
    int weight;
    };

    void main(void)
    {
    int a=0;
    Person p={"Peter",180,80};

    printf("%d %d %d %d %d\n", sizeof(char), sizeof(short), sizeof(int), sizeof(float), sizeof(double));
    printf("%d %d %d\n",sizeof(Person), sizeof(p), sizeof(a) );


    資料來源:http://www.cmlab.csie.ntu.edu.tw/~perng/course/chap5/chap5.html

    回覆刪除
  17. B9633136
    sizeof的概念
    sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其運算元的存儲大小。運算元可以是一個運算式或括在括弧內的類型名。運算元的存儲大小由運算元的類型決定。
    二、sizeof的使用方法
      1、用於資料類型
      sizeof使用形式:sizeof(type)
      資料類型必須用括弧括住。如sizeof(int)。
      2、用於變數
      sizeof使用形式:sizeof(var_name)或sizeof var_name
      變數名可以不用括弧括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括弧的用法更普遍,大多數程式師採用這種形式。
      注意:sizeof操作符不能用於函數類型,不完全類型或位欄位。不完全類型指具有未知存儲大小的資料類型,如未知存儲大小的陣列類型、未知內容的結構或聯合類型、void類型等。
      如sizeof(max)若此時變數max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。
    資料來源:http://www.softhouse.com.cn/news/show/1660.html

    回覆刪除
  18. B9633184

    sizeof用來求取運算式中佔有多少Byte
    也可以用來當作某種類型特性

    參考資料:http://tw.knowledge.yahoo.com/question/question?qid=1406081503011

    回覆刪除
  19. sizeof 運算子可能無法多載。sizeof 運算子所傳回的值是 int 型別。下表列出的常數值代表特定預先定義型別的大小。
    運算式 結果

    sizeof(sbyte) 1

    sizeof(byte) 1

    sizeof(short) 2

    sizeof(ushort) 2

    sizeof(int) 4

    sizeof(uint) 4

    sizeof(long) 8

    sizeof(ulong) 8

    sizeof(char) 2(Unicode)

    sizeof(float) 4

    sizeof(double) 8

    sizeof(bool) 1

    至於所有其他型別,包括結構 (Struct),sizeof 運算子只能用於 unsafe 程式碼區塊。雖然您可以使用 SizeOf 方法,但是這個方法所傳回的值不一定會等於 sizeof 所傳回的值。Marshal.SizeOf 會傳回型別經過封送處理後的大小。sizeof 則傳回已由 Common Language Runtime 配置的大小,包括任何填補。


    資料來源:
    http://msdn.microsoft.com/zh-tw/library/eahchzkf(VS.80).aspx

    回覆刪除
  20. sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。操作數的存儲大小由操作數的類型決定。 

    sizeof的主要用途

      1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如: 

      void *malloc(size_t size), 

      size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 

      2、sizeof的另一個的主要用途是計算數組中元素的個數。例如: 

      void * memset(void * s,int c,sizeof(s))。 

    資料來源:http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/c/0603/768204.html

    回覆刪除
  21. sizeof

    (PHP3 , PHP4)

    sizeof --- 取得陣列中元素的數目

    語法 : int sizeof(array array);

    說明 :

    傳回陣列中元素的數目。

    資料來源:
    http://linux.tnc.edu.tw/techdoc/banic/array/sizeof.html

    回覆刪除
  22. sizeof的使用方法 
      1、用數據類型 

      sizeof使用形式:sizeof(type) 

      數據類型必須用括號括住。如sizeof(int)。 

      2、用變量 

      sizeof使用形式:sizeof(var_name)或sizeof var_name 

      變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。
    注意:sizeof操作符不能用函數類型,不完全類型或位字段。
      如sizeof(max)若此時變量max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。 

    sizeof的結果 
      sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保証能容納實現所建立的最大對象的字節大小。 

    sizeof的主要用途 
      1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如: 

      void *malloc(size_t size), 

      size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 

      2、sizeof的另一個的主要用途是計算數組中元素的個數。例如: 

      void * memset(void * s,int c,sizeof(s))。 

    資料來源:http://fanqiang.chinaunix.net/a4/b2/20010419/144336_b.html

    回覆刪除
  23. 在C/C++裡sizeof()是個函式. 此函式有一個引數(參數). 這引數就是型態的名字, 例: int, float, double, char, 等等. 可傳進的型態除了C/C++裡基本的型態之外其它使用者自訂的型態也可以傳入. 這函式會回傳一個整數. 這整數是告訴你此型態在電腦裡所在的空間大小. 比如說, 如果我有一個自訂的型態叫user_define. 若我想知道其大小, 只要呼叫sizeof()這函式, 在呼叫時傳入user_define之後我就可從sizeof()回傳的數字知其大小了


    參考資料:http://tw.knowledge.yahoo.com/question/question?qid=1005031305615

    回覆刪除
  24. sizeof -- 統計變數中的單元數目
    說明
    int sizeof ( mixed var)
    sizeof() 函式是 count() 的別名。
    (參考出處)
    http://linux.tnc.edu.tw/techdoc/php/php_big5/function.sizeof.html


    sizeof()可以用來顯示資料所使用的記憶空間有幾個位元組。運算子 sizeof() 括號內的引數可以是資料,也可以是資料型態。

    Ex. 「sizeof(double) 的值 8」意思是說一個 double 變數所佔空間是一個 char 的 8倍。只不過 char 通常是 1byte,所以才把 sizeof() 的傳回值當作所佔用的 byte 數。
    (參考出處)
    http://tw.knowledge.yahoo.com/question/question?qid=1005031305615

    回覆刪除
  25. char foo()
    {
    printf("foo() has been called.\n");
    return 'a';
    }
    int main()
    {
    size_t sz = sizeof( foo() ); // foo() 的返回值类型为char,所以sz = sizeof(char ),foo()并不会被调用
    printf("sizeof( foo() ) = %d\n", sz);
    }

    C99标准规定,函数、不能确定类型的表达式以及位域(bit-field)成员不能被计算sizeof值,即下面这些写法都是错误的:
    sizeof( foo );// error
    void foo2() { }
    sizeof( foo2() );// error
    struct S
    {
    unsigned int f1 : 1;
    unsigned int f2 : 5;
    &
    nbsp; unsigned int f3 : 12;
    };
    sizeof( S.f1 );// error


    資料來源:
    http://www.dxxxbbs.cn/erji-C-program/sizeof-deyongfajiqishuoming_1/

    回覆刪除
  26. sizeof 是 C/C++ 的保留字(key word),不是函數。
    sizeof(Type) 會在編譯時期就將 Type 所需要的記憶體大小算出來了。

    Visual C++ 保留字會是以相同的顏色表示呀,sizeof 應該會與 if, for, switch... 等保留字用相同的顏色表示。






    資料來源:http://tw.knowledge.yahoo.com/question/question?qid=1607042703749

    回覆刪除
  27. C 語言中指標以記憶體的位址來表示,因此指標可以做加減的運算,其運算原則如下:

    指標加減常數 (或是 ++, --)
    int x[20];
    int *xPtr;

    *xPtr = &x[0]; // 也可以用 xPtr = x; 假設 xPtr 內的資料為 A000

    *xPtr++; // 也可以用 xPtr = xPtr + 1; 此運算完成後 xPtr 內之資料為 A002
    // 剛好為變數 x[1] 之位址

    xPtr = xPtr + 10; //此運算完成後 xPtr 內之資料為 A016,剛好為
    // 變數 x[11] 之位址

    注意:

    指標之 +、 -、 ++、 -- 等符號在運算時必須看指標變數之形態,例如:
    如果是字元指標的話,

    char *xPtr, x[20];
    xPtr = x;
    xPtr = xPtr + 1;

    上面的 + 號實際上會將變數 xPtr 內所存放的位址加上 1,
    如果是浮點指標的話,

    double x[20];
    double *xPtr = x;
    xPtr = xPtr + 1;

    上面的 + 號實際上會將變數 xPtr 內所存放的位址加上 sizeof(*xPtr),更複雜的情況也是依此原則來處理,例如結構指標或是陣列指標,如下:
    FILE *fp;
    fp = fp + 1; // 變數 fp 內所存放的位址資料加上 sizeof(*fp)

    或是
    int x[5][3];
    int (*xp)[3];
    xp = x[3]; // 千萬別寫 &x[3],沒有這種東西
    xp = xp + 1; // 變數 xp 內所存放的位址資料加上 sizeof(int[3])
    // 新的 xp 指向 x[4] 陣列存放的地方(此位址當然也
    // 就是 &x[4][0] 或是 x[4])


    指標減指標:
    C 語言裡面沒有定義兩個指標 (位址) 相加的運算,但是有定義兩個相同形態指標的相減運算,如下:

    int i, x[10];
    int *xPtr1=&x[1], *xPtr2=&x[4];
    i = xPtr2 - xPtr1; // 請注意:運算結果存放在變數 i 裡的數值是 3,並不是 6
    // 是 ((int)xPtr2 - (int)xPtr1)/sizeof(int)



    資料來源:http://squall.cs.ntou.edu.tw/cprog/Materials/Pointers.html

    回覆刪除
  28. sizeof

    (PHP3 , PHP4)

    sizeof --- 取得陣列中元素的數目

    語法 : int sizeof(array array);

    說明 :

    傳回陣列中元素的數目


    資料來源:http://linux.tnc.edu.tw/techdoc/banic/array/sizeof.html

    回覆刪除
  29. sizeof運算子
    算出任何資料型態所佔的記憶體大小(以位元組為單位.

    例:
    =====================
    int a=10,b=10;
    w=sizeof a++;
    x=sizeof(a+b);
    而輸出的結果
    w = 4
    x = 4

    ======================


    答案:

    =======================
    w=sizeof(a++) 應該是
    w=int 所佔byte數=4

    x=sizeof(a+b) a+b值不影響int
    所佔用的byte數,因此依舊為4
    ========================
    sizeof 就是求一個 type 或 expression 的結果佔多少位元組

    而且它的厲害之處是不會真的去求值, 它在 compile-time 就可以把結果算給你

    所以說 a + b 實際值是多少根本不重要, 它才不會去算, 它只知道結果還是 int, 所以傳回 4

    回覆刪除
  30. 資料來源
    http://bbs.wefong.com/viewthread.php?tid=1751372

    回覆刪除
  31. 寫一程式取得並顯示char、 int、 long 、float 、double型態的位元組數

    作法是利用sizeof這個指令,這個指令的語法是:

    1.sizeof(資料型態)
    2.sizeof 資料型態
    3.sizeof(變數名稱)
    4.sizeof 變數名稱


    所以你在程式的地方就做一個輸出:



    printf("int使用%d個位元組\n",sizeof(int));


    即可,其他的部分以此類推。


    資料來源:
    http://tw.knowledge.yahoo.com/question/question?qid=1507072606631

    回覆刪除
  32. sizeof(expression) 用來在編譯時期(compile-time) 求取運算式佔有多少 Byte

    用處喔, 在 C++ 中可以用來製作某一種的 type traits

    回覆刪除
  33. sizeof用來求取變數的佔用記憶體大小,會傳回以byte當單位的數字,sizeof本身是一個操作符,並非函數,sizeof操作符以字節形式給出了其操作數的存儲大小,這是sizeof的核心所在,即操作數在内存占多大,sizeof就返回多少。

    回覆刪除
  34. 現在要介紹一個新的運算子—sizeof。此運算子將傳為整數常數,所佔的byte數。已範例中的變數dice微運算元,如下敘述所示: cout << sizeof dice; 傳回結果為4,因為dice為int型態,佔4bytes的空間。

    Sizeof運算子適用於陣列元素或整個陣列;若運算元為陣列名稱,則bytes記憶體;若運算元是單一陣列元素或值,則傳回該元素或值。因此,當pstr為陣列時,則以下敘述可計算出此陣列共有多少個元素 cout<<(sizeof pstr) / (sizeof pstr[0]);

    先算出整個陣列所佔的byte數。在算出陣列值中第一個元素的byte數為元素個數。

    回覆刪除
  35. 當pstr是指標陣列時,不論是以陣列或其中單獨的陣列位元,sizeof運算子無法告知有關文字字串所佔的記憶體的大小。
    Sizeof運算子也適用於型態名稱,此時它所傳回的將是此種型態的變數所佔的記憶體bytes數已型態名稱為運算元,如下敘述所示: long_size = sizeof(long); 變數long_size的值將為4。 sizeof傳回的值可視為整數,但精確的來說,它屬於size_t型態,這是衡量byte述的型態種型態經常出現在許多地方,例如,出現在Visual C++的許多標準函式庫裡,它的範圍於unsigned int。


    資料來源:c語言 初學課本

    回覆刪除
  36. sizeof使用場合。

    1.sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如:
    void*malloc(size_tsize),
    size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)。
    2.用它可以看看一類型的對象在內存中所佔的單元字節。
    void*memset(void*s,intc,sizeof(s))
    3.在動態分配一對象時,可以讓系統知道要分配多少內存。
    4.便於一些類型的擴充,在windows中就有很多結構內型就有一個專用的字段是用來放該類型的字節大小。
    5.由於操作數的字節數在實現時可能出現變化,建議在涉及到操作數字節大小時用sizeof來代替常量計算。
    6.如果操作數是函數中的數組形參或函數類型的形參,sizeof給出其指針的大小。



    資料來源:http://www.7880.com/info/2006/04/17/article-741.html

    回覆刪除
  37. sizeof深入理解

    1.sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保證能容納實現所建立的最大對象的字節大小。
    2.sizeof是算符
    3.sizeof可以用類型做參數
    sizeof還可以用函數做參數,比如:
    short f();
    printf("%d\n", sizeof(f()));

    輸出的結果是sizeof(short),即2。

    4.數組做sizeof的參數不退化
    5.大部分編譯程序 在編譯的時候就把sizeof計算過了 是類型或是變量的長度這就是sizeof(x)可以用來定義數組維數的原因
    6.sizeof後如果是類型必須加括弧,如果是變量名可以不加括弧。這是因為sizeof是個操作符不是個函數。
    7.sizeof後如果是類型必須加括弧,如果是變量名可以不加括弧。這是因為sizeof是個操作符不是個函數。
    8.當適用了於一個結構類型時或變量, sizeof 返回實際的大小, 當適用一靜態地空間數組, sizeof 歸還全部數組的尺 寸。 sizeof 操作符不能返回動態地被分派了的數組或外部的數組的尺寸。

    資料來源:
    http://blog.yam.com/htshboy/article/13921455

    回覆刪除
  38. sizeof就是用來求取變數的佔用記憶體大小, 會傳回以byte當單位的數字
    通常用在求得某struct的大小(不同平台和不同編譯器的變數大小不太相同)

    或是動態配置記憶體的時候, 用來求得正確的大小的
    ex
    int *p;
    p = malloc(sizeof(int) *100);

    約當於
    int p[100];


    資料來源:http://www.blueshop.com.tw/board/show.asp?subcde=BRD20050215145528IEH&fumcde=FUM20050124191259IGD&rplcnt=5

    回覆刪除
  39. sizeof運算子是用來算出各種資料型態所佔用的空間(單位為bytes)。
    • 語法
    – sizeof (資料型態)
    • 例如:
    sizeof運算子
    sizeof(a); /* 取得變數a的記憶體配置大小*/
    sizeof(‘A’); /* 取得字元A的記憶體配置大小*/
    sizeof(double); /* 取得型態double的記憶體配置大小*/

    資料來源:http://www.ablmcc.edu.hk/~scy/CIT/easy-c.pdf

    回覆刪除
  40. sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。操作數的存儲大小由操作數的類型決定。


    資料來源:http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/c/0603/768204.html

    回覆刪除
  41.   一、sizeof的介绍

      sizeof是c语言的一种单目操作符,如c语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

      二、sizeof的使用方法
      1、用于数据类型 
      sizeof使用形式:sizeof(type) 
      数据类型必须用括号括住。如sizeof(int)。 
      2、用于变量 
      sizeof使用形式:sizeof(var_name)或sizeof var_name 
      变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。 
      注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 
      如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [max]且max未知,sizeof(void)都不是正确形式。


    資料來源:
    http://www.exam8.com/computer/djks/dj2/C/ziliao/200708/59037.html

    回覆刪除
  42. 一、sizeof的概念
      sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

    二、sizeof的使用方法
      1、用于数据类型

      sizeof使用形式:sizeof(type)

      数据类型必须用括号括住。如sizeof(int)。

      2、用于变量

      sizeof使用形式:sizeof(var_name)或sizeof var_name

      变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。

      注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

      如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式。

    三、sizeof的结果
      sizeof操作符的结果类型是size_t,它在头文件<stddef.h>中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

      1、若操作数具有类型char、unsigned char或signed char,其结果等于1。

      ANSI C正式规定字符类型为1字节。

      2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。

      3、当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。

      4、当操作数具有数组类型时,其结果是数组的总字节数。

      5、联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数,包括任何垫补在内。
    引用自

    回覆刪除
  43. B9633127

    sizeof的主要用途1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。

    例如:
    void *malloc(size_t size),

    size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。

    2、sizeof的另一個的主要用途是計算數組中元素的個數。 例如:

    void * memset(void * s,int c,sizeof(s))。 void * memset(void * s,int c,sizeof(s))。

    建議由於操作數的字節數在實現時可能出現變化,建議在涉及到操作數字節大小時用ziseof來代替常量計算。

    資料來源:
    http://translate.google.com.tw/translate?hl=zh-TW&sl=zh-CN&u=http://www.haoxiai.net/bianchengyuyan/cyuyan/12937.html&sa=X&oi=translate&resnum=8&ct=result&prev=/search%3Fq%3Dsizeof%2BC%25E8%25AA%259E%25E8%25A8%2580%26complete%3D1%26hl%3Dzh-TW%26sa%3DG

    回覆刪除
  44. sizeof是C語言的一種單目操作符。它並不是函數。sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括號內的類型名。操作數的存儲大小由操作數的類型決定。
    1、用於數據類型 
    sizeof使用形式:sizeof(type) 
    數據類型必須用括號括住。如sizeof(int)。 
    2、用於變量
    sizeof使用形式:sizeof(var_name)或sizeof var_name
    變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括號的用法更普遍,大多數程式員採用這種形式。
    注意:sizeof操作符不能用於函數類型,不完全類型或位字段。不完全類型指具有未知存儲大小的數據類型,如未知存儲大小的數組類型、未知內容的結構或聯合類型、void類型等。
    如sizeof(max)若此時變量max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。
    http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/c/0603/768204.html

    回覆刪除
  45. sizeof()可以用來顯示資料所使用的記憶空間有幾個位元組。運算子 sizeof() 括號內的引數可以是資料,也可以是資料型態。

    ps. 依照 ANSI/ISO C++ 原先的定義,sizeof() 運算子所返回的值並不是位元組數,而是其所佔空間與一個 char 所佔空間的比值,因此 ANSI/ISO C++ 嚴格規定 sizeof(char) 等於 1。

    Ex. 「sizeof(double) 的值 8」意思是說一個 double 變數所佔空間是一個 char 的 8倍。只不過 char 通常是 1byte,所以才把 sizeof() 的傳回值當作所佔用的 byte 數。

    資料來源:
    http://tw.knowledge.yahoo.com/question/question?qid=1005031305615

    回覆刪除
  46. sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信和傳回變數佔用的大小
    是依個翻譯器運算子!!
    計算陣列大小
    int n=sizeof a/sizeof a[0];
    對於型態需要使用括號
    float*p=malloc(sizeof(float));

    sizeof與其他操作符的關系 
      sizeof的優先級為2級,比/、%等3級運算符優先級高。它可以與其他操作符一起組成表達式。如i*sizeof(int);其中i為int類型變量 


    參考來源:
    http://www.dyu.edu.tw/~jscherng/Programming_Languages/ppt/Chapter7.ppt#278,16,sizeof 運算子 

    回覆刪除
  47. sizeof()函式來達成,
    宣告陣列所估用的記憶體空間大小,
    是以bytes為單元。
    語法:
    int sizeof(陣列名稱)
    sizeof(char)=1 bytes
    sizeof(int)=4 bytes

    回覆刪除
  48. sizeof是C語言的一種單目運算符,它以字節形式給出了相應操作數所佔存儲空間的大小.從提高程序的可移植性、通用性以及延長軟件的生命週期等方面考慮,軟件開發時,程序中對一種數據類型所佔空間大小不應做任何假定,而應通過sizeof運算符獲得.


    資料來源:http://72.14.235.104/translate_c?hl=zh-TW&sl=zh-CN&u=http://www.ilib.cn/A-shanxjyxyxb200604020.html&prev=/search%3Fq%3Dsizeof%2Bc%25E8%25AA%259E%25E8%25A8%2580%26start%3D70%26complete%3D1%26hl%3Dzh-TW%26sa%3DN&usg=ALkJrhjVNWpXlogRoIt5bIrduBmeRWl_Pw

    回覆刪除
  49. sizeof的主要用途 
      1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如: 

      void *malloc(size_t size), 

      size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 

      2、sizeof的另一個的主要用途是計算數組中元素的個數。例如: 

      void * memset(void * s,int c,sizeof(s))。 

    資料來源:http://fanqiang.chinaunix.net/a4/b2/20010419/144336_b.html

    回覆刪除
  50. sizeof的主要用途 
      1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如: 

      void *malloc(size_t size), 

      size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 

      2、sizeof的另一個的主要用途是計算數組中元素的個數。例如: 

      void * memset(void * s,int c,sizeof(s))。 

    資料來源:http://fanqiang.chinaunix.net/a4/b2/20010419/144336_b.html

    回覆刪除
  51. struct data_entry

    {

    long a ; // 通常long是4 byte

    short b ; // 通常short是2 byte



    // 請注意: 某基本資料的實際size可能會因為CPU, 系統與compiler不同而變

    // 標準C語言僅對short, long等基本資料型別做了下列定義,

    //short at least a 16-bit signed integer
    // long at least a 32-bit signed integer

    // 至於真正該佔用幾個byte, 則由compiler決定, 所以才會有sizeof這個運算子的存在

    回覆刪除
  52. sizeof函數
    取得陣列值所佔之記憶體大小

    來源:MSN好友

    回覆刪除
  53. sizeof運算子
    sizeof運算子是用來算出各種資料型態所佔用的空間(單位為bytes)

    語法
    -sizeof(資料型態)
    例如
    sizeof(a); /*取得變數a記憶體配置大小*/
    sizeof(A); /*取得字元A記憶體配置大小*/
    sizeof(double);/*取得型態double記憶體配置大小*/

    回覆刪除
  54. sizeof的使用方法 
      1、用數據類型 

      sizeof使用形式:sizeof(type) 

      數據類型必須用括號括住。如sizeof(int)。 

      2、用變量 

      sizeof使用形式:sizeof(var_name)或sizeof var_name 

      變量名可以不用括號括住。如sizeof (var_name),sizeof var_name等都是正確形式。
    注意:sizeof操作符不能用函數類型,不完全類型或位字段。
      如sizeof(max)若此時變量max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。 

    sizeof的結果 
      sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。該類型保証能容納實現所建立的最大對象的字節大小。 

    sizeof的主要用途 
      1、sizeof操作符的一個主要用途是與存儲分配和I/O系統那樣的例程進行通信。例如: 

      void *malloc(size_t size), 

      size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 

      2、sizeof的另一個的主要用途是計算數組中元素的個數。例如: 

      void * memset(void * s,int c,sizeof(s))。 

    資料來源:http://fanqiang.chinaunix.net/a4/b2/20010419/144336

    回覆刪除
  55. sizeof()可以用來顯示資料所使用的記憶空間有幾個位元組。運算子 sizeof() 括號內的引數可以是資料,也可以是資料型態。

    回覆刪除

HTML 編輯器