函数指针数组的长度
问题描述:
答
,对于阵列的长度的标准成语是:
#define countof(a) (sizeof(a)/sizeof(*(a)))
如果a
是一个实际的阵列,即,声明为TYPE a[...]
这只会工作。如果a
是从数组创建的指向TYPE
的指针,例如通过将数组传递给函数,上述宏将产生不正确的结果。
我怀疑你的代码是这种混淆的结果。它取消fp
,这只有在fp
是一个指向数组的指针时才是正确的,而不是指向数组元素的指针。
答
不是动态分配的数组,也不是通过指向数组的指针(根据定义排除动态分配的数组)。
sizeof(apointer)
将返回指针的大小而不是它指向的缓冲区的大小。在C中,sizeof
没有办法知道指针指向一个数组或者只是一个单独的元素(实际上是一个1的数组)。
如果你这样做sizeof(*apointer)
它将返回单个元素(或数组中的第一个元素)的大小,因为再次,C中没有办法让sizeof知道指针指向一个数组或单个指针元件。
你为什么投? – cnicutar 2013-03-13 19:11:00
至少它不会像你打算的那样工作。密切关注你的括号。并请显示'fp'的声明。 – moooeeeep 2013-03-13 19:35:39