开发者社区> 问答> 正文

如何找到“ sizeof”(指向数组的指针)?

首先,这是一些代码:

int main() { int days[] = {1,2,3,4,5}; int *ptr = days; printf("%u\n", sizeof(days)); printf("%u\n", sizeof(ptr));

return 0;

} 有没有办法找出ptr指向的数组的大小(而不是仅仅给出其大小,在32位系统上为4个字节)?

展开
收起
保持可爱mmm 2020-01-16 14:55:10 429 0
1 条回答
写回答
取消 提交回答
  • 不,你不能。编译器不知道指针指向什么。有一些技巧,例如以一个已知的带外值结束数组,然后计算大小直到该值,但这并不使用sizeof。

    Zan提到的另一个技巧是将大小存储在某个地方。例如,如果要动态分配数组,请分配一个比所需块大一个int的块,将大小存储在第一个int中,并返回ptr + 1作为指向数组的指针。当需要大小时,减少指针并偷看隐藏的值。只需记住要从头开始释放整个块,而不仅仅是数组。 问题来源于stack overflow

    2020-01-16 14:55:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载