C/C++編程知識:運算符(五)丨sizeof()運算符來啦!

在C或C ++中,?Sizeof是一個非常常用的運算符。它是一個編譯時一元運算符,可用于計算其操作數(shù)的大小。sizeof的結果是無符號整數(shù)類型,通常用size_t表示。sizeof可以應用于任何數(shù)據(jù)類型,包括原始類型(例如整數(shù)和浮點類型,指針類型)或復合數(shù)據(jù)類型(例如Structure,union等)。

用法
sizeof()運算符根據(jù)操作數(shù)類型以不同方式使用。
1.當操作數(shù)是數(shù)據(jù)類型時
當將sizeof()與int,float,char…等數(shù)據(jù)類型一起使用時,它僅返回分配給該數(shù)據(jù)類型的內存量。

讓我們來看一個例子:
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()可能會根據(jù)機器提供不同的輸出,我們已經(jīng)在32位gcc編譯器上運行了程序。
2.當操作數(shù)是一個表達式時
當將sizeof()與表達式一起使用時,它將返回表達式的大小??蠢樱?/p>
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個字節(jié)。

需要Sizeof
1.找出數(shù)組中元素的數(shù)量。
Sizeof可用于自動計算數(shù)組元素的數(shù)量。讓我們看例子:
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.為了動態(tài)分配的內存塊
sizeof在動態(tài)內存分配中被大量使用。例如,如果我們要分配足以容納10個整數(shù)的內存,而我們不知道該特定機器中的sizeof(int)。我們可以借助sizeof進行分配。
int* ptr = (int*)malloc(10 * sizeof(int));
希望對大家有幫助!更多知識,會繼續(xù)分享奧~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍分享:

編程學習視頻分享:
