gpt4 book ai didi

c - 如何找到数组的大小(从指向第一个元素数组的指针)?

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:04 24 4
gpt4 key购买 nike

首先,这是一些代码:

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 位系统上是四个字节)?

最佳答案

不,你不能。编译器不知道指针指向什么。有一些技巧,例如以已知的带外值结束数组,然后计算大小直到该值,但这并没有使用 sizeof()

另一个技巧是Zan提到的那个,这是将尺寸藏在某处。例如,如果您正在动态分配数组,分配一个比您需要的大一个 int 的 block ,将大小存储在第一个 int 中,然后返回 ptr+1 作为指向数组的指针.当您需要大小时,递减指针并查看隐藏值。请记住从头开始释放整个 block ,而不仅仅是数组。

关于c - 如何找到数组的大小(从指向第一个元素数组的指针)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com