2014-07-09 31 views
0

我在C中實現了一個插入排序,並且有人幫助我告訴我做了一些指針,如下面的行結尾所示,但是爲什麼?C quesiton中的插入排序

size_t size = sizeof(array)/sizeof(*array); 

爲什麼第二個指向數組的指針,size_t是做什麼的?

回答

0

sizeof(array) =整個數組的大小,以字節爲單位;

sizeof(*array) =數組中第一項的大小(以字節爲單位)

由於C數組中的項目具有統一的大小,因此將第一個除以第二個給出數組中項目的數量。

size_t是一個大小足以存儲計算機dan在內存中存儲的任何項的大小的無符號整數。所以,通常情況下,它與unsigned int相同,但不能保證是,而且它的語義價值是不同的。

+0

已經編輯了'size_t'; 'array [0]'是等價的。所以這只是一個隨意的選擇。數組不是普通的指針,但可以等效地使用它們。 – Tommy

+0

好的,謝謝。那麼'size_t'也可以根據編譯器和體系結構評估爲long long或short或unsigned long嗎? – user3813418

+0

是的。規範只是將其定義爲「sizeof運算符的結果的無符號整數類型」和「sizeof'」結果的值是實現定義的,其類型(無符號整數類型)是size_t「。沒有其他限制被指定。 – Tommy

0

爲什麼是第二個指針陣列

實施例1
炭一個[5];
的sizeof(A)= 5
的sizeof(* A)= 1

所以,大小= 5/1 = 5 //這表明沒有陣列

實施例2
中的元素 int a [5];
的sizeof(A)= 20
的sizeof(* A)= 4

所以,大小= 20/4 = 5 //這指示數組中元素的無

,什麼size_t呢?

閱讀:What is size_t in C?