使用sizeof()計算陣列長度

2021-07-04 23:19:50 字數 1100 閱讀 5893

char *words = ;

//計算word中元素個數

size_t words_size = sizeof(words)/sizeof(char*);

//使用陣列初始化words2(指標初始化)

list

words2(words,words+words_size);

解析

1、sizeof()

sizeof操作符返回乙個物件或型別名的長度,返回值型別為size_t, 長度單位為位元組。 有如下三種語法形式

sizeof(type name);

sizeof(expr);

sizeof expr;

sizeof用於expr上,將獲得該表示式的結果的型別長度

sale_item item, *p;

// 三種方式獲取物件型別sales_item的大小

sizeof(sale_item);// 取得物件型別 sale_item的大小

sizeof item; //item型別的大小, 即sizeof(sale_item)

sozeof *p; //p 指向型別的大小 即sizeof(sale_item)

將sizeof用於 expr是並沒有計算expr的值。特別是在sizeof *p中,指標p可以是乙個無效位址,因為不需要對p做解引用操作。

● 對char型別或值為char型別的表示式做sizeof操作結果為1.

●對引用型別做sizeof操作,將返回存放此引用型別物件所需的記憶體空間大小。

●對指標做sizeof操作,將返回存放指標所需的記憶體大小,注意,如果要獲取該指標指向物件的大小,則必須對該指標進行解引用。

●對陣列做sizeof操作等效於對其元素做sizeof操作的結果乘上陣列元素的個數。

因為sizeof返回整個陣列在記憶體中的儲存長度,所以用sizeof陣列的結果初一sizeof其元素型別的結果,即可求出陣列元素的個數:

int sz = sizeof(ia)/sizeof(*ia);

通常將8位的塊作為乙個位元組,32位或4個位元組作為乙個 「字」。一般的short為半個機器字長,int為乙個機器字長。

用sizeof 計算陣列長度

計算陣列長度時可以用 int array sizeof array 12 int length sizeof array sizeof array 0 3 char array abc sizeof array 4 考慮 0 strlen array 3 不考慮 0 int length sizeo...

sizeof()與 陣列長度獲取

獲取陣列長度 函式通過引數傳入乙個陣列的指標,如何獲取該陣列的長度?如 int find int array,int key 其中array的長度如何獲取?用過sizeof array sizeof int 但是結果不對,始終是1 滿意回答 int mylen int buf int main vo...

用sizeof測量陣列長度

今天本想寫乙個進行陣列排序的 但我被乙個bug困住了,事情是這樣的 int a 定義陣列 int n sizeof a 求陣列長度 int i 輸出陣列 printf 陣列 for i 0 i printf 10i a i 陣列 1549 93998 724199344 2981888 635684...