gpt4 book ai didi

c - 你如何获得传递给函数的数组的大小?

转载 作者:太空狗 更新时间:2023-10-29 16:58:22 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来打印出数组中的元素。但是,当我处理传递的数组时,我不知道如何遍历数组。

void
print_array(int* b)
{
int sizeof_b = sizeof(b) / sizeof(b[0]);
int i;
for (i = 0; i < sizeof_b; i++)
{
printf("%d", b[i]);
}
}

迭代传递的数组的最佳方法是什么?

最佳答案

您还需要将数组的大小传递给函数。
当您将数组传递给您的函数时,您实际上是在传递该数组中第一个元素的地址。所以指针只指向函数内部的第一个元素。

由于数组中的内存是连续的,您仍然可以使用指针运算,例如 (b+1) 指向第二个元素或等效的 b[1]

void print_array(int* b, int num_elements)
{
for (int i = 0; i < num_elements; i++)
{
printf("%d", b[i]);
}
}

这个技巧只适用于数组而不适用于指针:

sizeof(b) / sizeof(b[0])

... 和 arrays are not the same as pointers .

关于c - 你如何获得传递给函数的数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868962/

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