2014-07-09 22 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?