在C或C ++中, Sizeof是一個非常常用的運算子,它是一個編譯時一元運算子,可用于計算其運算元的大小,sizeof的結果是無符號整數型別,通常用size_t表示,sizeof可以應用于任何資料型別,包括原始型別(例如整數和浮點型別,指標型別)或復合資料型別(例如Structure,union等),
用法
sizeof()運算子根據運算元型別以不同方式使用,
1.當運算元是資料型別時
當將sizeof()與int,float,char…等資料型別一起使用時,它僅回傳分配給該資料型別的記憶體量,
讓我們來看一個例子:
C語言:
#include <stdio.h>
int main()
{
printf("%lu\n", sizeof(char));
printf("%lu\n", sizeof(int));
printf("%lu\n", sizeof(float));
printf("%lu", sizeof(double));
return 0;
}
C ++:
#include <iostream>
using namespace std;
int main()
{
cout << sizeof(char)<<"\n";
cout << sizeof(int)<<"\n";
cout << sizeof(float)<<"\n";
cout << sizeof(double)<<"\n";
return 0;
}
注意:sizeof()可能會根據機器提供不同的輸出,我們已經在32位gcc編譯器上運行了程式,
2.當運算元是一個運算式時
當將sizeof()與運算式一起使用時,它將回傳運算式的大小,看例子:
C語言:
#include <stdio.h>
int main()
{
inta = 0;
double d = 10.21;
printf("%lu", sizeof(a + d));
return 0;
}
C ++:
#include <iostream>
using namespace std;
int main()
{
int a = 0;
double d = 10.21;
cout << sizeof(a + d));
return 0;
}
從int和double的第一種情況下我們知道,大小分別是4和8,a是int變數,而d是double變數,最終結果將是兩倍,因此,我們程式的輸出為8個位元組,
需要Sizeof
1.找出陣列中元素的數量,
Sizeof可用于自動計算陣列元素的數量,讓我們看例子:
C語言:
#include <stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };
printf("Number of elements:%lu ", sizeof(arr) / sizeof(arr[0]));
return 0;
}
C ++:
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 1, 2, 3, 4, 7, 98,
0, 12, 35, 99, 14 };
cout << "Number of elements: "
<<(sizeof(arr) / sizeof(arr[0]));
return 0;
}
2.為了動態分配的記憶體塊
sizeof在動態記憶體分配中被大量使用,例如,如果我們要分配足以容納10個整數的記憶體,而我們不知道該特定機器中的sizeof(int),我們可以借助sizeof進行分配,
int* ptr = (int*)malloc(10 * sizeof(int));
希望對大家有幫助!更多知識,會繼續分享奧~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
C語言C++編程學習交流圈子,QQ群1090842465【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍分享:

編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249683.html
標籤:C++
上一篇:C++ 例外機制(下)
下一篇:C/C++知識教程:指標
