c語言中sizeof是什麼意思,C語言中sizeof是什麼意思

時間 2021-10-17 02:36:57

1樓:肥仙女

sizeof是c語言中保留關鍵字,也可以認為是一種運算子,單目運算子。常見的使用方式:

int a=10;

int arr=[1,2,3];

char str="hello";

int len_a = sizeof(a);

int len_arr = sizeof(arr);

結果是:len_a=4,len_arr=12,len_str=6

2樓:匿名使用者

int一般佔據四個位元組,double佔據八個位元組

3樓:匿名使用者

main()

,q="abc";

//定義字元陣列 注意:p和q不同-為q分配4個位元組的空間

printf("%d %d\n",sizeof(p),sizeof(q));

//sizeof 是c裡面的關鍵字 並非函式,意思是陣列p和q 所佔的記憶體多少 單位是位元組

getch();//用此命令可以在執行的的時候,按任意鍵退出 ,如果沒有此命令,螢幕閃一下就沒了(程式結束就退出) 所以看不見結果

注:在vc 中 除錯(那個感嘆號 )的時候已經內建此命令即使不用getch() 還是可以看到結果的

4樓:匿名使用者

char p=,q="abc";

給字元陣列p賦值,共3個元素:'a','b','c'

給字元陣列q賦值,共4個元素:'a','b','c',"\0",因為直接用字串給字元陣列賦值的話,系統最後會加上一個"\0"

sizeof表示字串元素的個數。

5樓:

sizeof是c/c++中的一個操作符(operator),簡單的說其作用就是返回一個物件或者型別所佔的記憶體位元組數

在你的程式中就是輸出p和q陣列所佔用的位元組數

6樓:聽不清啊

sizeof是計算物件所佔的位元組數,通常用來檢視變數、陣列或結構體等所佔的位元組個數。

比如:int a;

char s="he likes swim very much."

struct

person;

sizeof(a); // 計算變數a所佔的位元組數,等價於sizeof(int)

sizeof(s); // 計算字串所佔的位元組數(包括串尾的串結束符'\0'在內)

sizeof(person); // 計算整個結構所佔的位元組總數

7樓:竹林傾聽雨

指的是該物件在記憶體中所佔的位元組數,

例如:你的sizeof(p)是3,佔三個位元組,sizeof(q)佔4個位元組

因為字元陣列還有一個界定符'\0',用來標識字串的結束。

8樓:喻元愷

就是取他在記憶體中佔的寬度啥

c語言中sizeof啥意義

9樓:匿名使用者

一、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,它在標頭檔案

中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是這種型別物件的總位元組數,包括任何墊補在內。

讓我們看如下結構:

struct  a;

在某些機器上sizeof(a)=12,而一般sizeof(char)+ sizeof(double)=9。

這是因為編譯器在考慮對齊問題時,在結構中插入空位以控制各成員物件的地址對齊。如double型別的結構成員x要放在被4整除的地址。

6、如果運算元是函式中的陣列形參或函式型別的形參,sizeof給出其指標的大小。

四、sizeof與其他操作符的關係

sizeof的優先順序為2級,比/、%等3級運算子優先順序高。它可以與其他操作符一起組成表示式。如i*sizeof(int);其中i為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))。

六、建議

由於運算元的位元組數在實現時可能出現變化,建議在涉及到運算元位元組大小時用sizeof來代替常量計算。

10樓:匿名使用者

sizeof()顧名思義size of ...某某的大小長度。如果是sizeof(int)那就意味著一個int型的長度。

8位代表一個位元組長度,所以如果是一般使用的tc編譯器(16位的)那麼sizeof(int)就等於2。

c語言中,sizeof運算子有什麼作用?

11樓:哇哎西西

sizeof運算子

該運算子在編譯階段就已經起作用了。它以位元組為單位返回其運算元的大小。它的運算元可以是資料物件也可以是一個型別。如果是型別那麼運算元需要用圓括號括起來。

如:sizeof(int)=4;

擴充套件資料:

c語言其他運算子:

1、取模運算子%

該運算子有個特性就是隻支援整數運算。它的作用就是用左邊的運算元除以右邊的運算元得到的餘數。它對浮點數其他型別不起作用。

如:11%2=1因為11除以2得5餘1

2、自增自減運算子++/--

這種運算子的基本作用就是讓其運算元增加1或者減去1。這種運算子有兩種模式:字首模式和字尾模式。

字首模式:運算子放在運算元的前面,在表示式中求值時先將運算元進行加1或者減1操作然後再參與運算。

字尾模式:運算子放在運算元的後面,在表示式中求值時先將運算元參與運算然後再對運算元進行加1或者減1操作。

3、三目運算子?:

顧名思義就是三個運算元的運算子,它的用法時當問號前面的表示式的值為真時,取值為冒號前面的數值,否則取值為冒號後面的數值。由於它的執行效率較高,常被我們用來代替條件語句。

如:x>1?2:3;這句話的意思就是當x的值大於1時,整個表示式的值為2,否則為3。

12樓:匿名使用者

通常用來計算一個變數或者型別的大小的,單位是位元組

譬如sizeof(char)==1, sizeof(int *)==4 這些是計算的型別的大小,char是一個位元組,int*是4個位元組(其實32位系統下指標都是4個位元組,譬如char*,void*等等)

另外譬如char a;那麼sizeof(a)==1

int b;那麼sizeof(b)==4(這個跟編譯器有關,有些是2)

另外在計算結構和類的大小的時候,也可以用sizeof來計算該類或者結構所佔的位元組.只是計算方法根據編譯器不同而有些不同,但基本的演算法都一樣,譬如char是1個位元組,int*是4個位元組,double是8個位元組,double*是4個位元組這樣子.有些編譯器會進行對齊處理,有些不會.

但是這個一般沒有太大的意義.

在應用方面,譬如

1.計算陣列元素個數

int a=;

sizeof(a)/sizeof(a[0])就是陣列a的大小除以單個元素的大小,那麼結果就是陣列a的元素個數,這樣比自己數來的方便,尤其是數量比較多的時候.在對陣列進行遍歷操作時,譬如for(int i=0;i

這樣就不容易出錯,不然很可能會出現少1或者多1的失誤

2.動態申請記憶體(用malloc,calloc,realloc的時候)

譬如要申請一段記憶體存放30個double型別數

那麼可以用(double*)malloc(sizeof(double)*30)也就是申請8*30個位元組的空間,並且把首地址返回給某個double*型別的變數

3.有些函式的引數需要位元組數的時候

13樓:匿名使用者

比如說你

int a;

short b[40];

printf ("%d\n", sizeof(int));

printf ("%d\n", sizeof(a));

printf ("%d\n", sizeof(b));

用vc執行的話,螢幕會顯示:44

80為什麼?

第一行,在vc中int型別佔4個位元組,sizeof返回int型別所佔位元組數

第二行,a佔了4個位元組,因為a是int型

第三行,b是短整型陣列,佔了2*40=80位元組sizeof,顧名思義,看所佔用的儲存空間的

在C語言中是什麼意思,C語言中 c 是什麼意思?

勢如雲 這是c語言的邏輯運算子 異或 這個 講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!邏輯運算子把各個運算的變數 或常量 連線起來組成一個邏輯表示式。邏輯運算子有4個,它們分別是 邏輯非 邏輯或 邏輯與 異或 在位運算裡面還有 位與 位或 的運算。什麼是邏輯運算 邏輯運算用來判斷...

c語言中extern是什麼意思,在C語言中標頭檔案的extern是什麼意思呢?

extern 宣告的函式是在外部定義的函式例項,最常見的就是通過extern定義在win32 dll定義的非託管函式。 取經人取經 就是全域性變數的意思,在建立工程的情況下,其他檔案也可以呼叫這個變數。 陳振龍 用了extern,就表示這個變數是全域性的和動態的,不存在使用哪一個的問題.比如3號檔案...

C語言中array是什麼意思,c語言中的array 是什麼意思哦

1 陣列,顧名思義,是相同型別的陣列成的一個組,也就是說是把相同型別的一系列資料統一編制到某一個組別中。這樣就可以通過陣列名 索引號簡單快捷的操作大量資料。這就和全校學生一樣,把學生分成多個班級,每個學生都是班級中的一員,如果要找張三,如果沒有班級的話,就要在全校學生中一個一個尋找,一直到找到為止 ...