gpt4 book ai didi

c - 为什么可以在不定义长度的情况下在 C 中声明数组?

转载 作者:太空狗 更新时间:2023-10-29 17:15:01 25 4
gpt4 key购买 nike

在 C 中,您应该定义数组的长度。但是,以下代码是有效的:

int arr[] = {10, 20, 30, 40, 50};

为什么这是可接受的语法?

最佳答案

这是一项便利的功能。数组的大小是从初始化程序中推导出来的,因此您不必拼写它:

int arr[] = {10, 20, 30, 40, 50};

等同于

int arr[5] = {10, 20, 30, 40, 50};

另一个例子(感谢 Eugene Sh.)是字符串初始值设定项:

char str[] = "asd";

等同于

char str[4] = "asd";

需要知道的一件重要事情是,当用作函数参数的类型时,情况有所不同。所有下一个表格:

void foo(int v[])

void foo(int v[1])
void foo(int v[5])
void foo(int v[1000])

它们之间都是等价的,它们被转换为:

void foo(int* v)

总是使用后者 (void foo(int* v)),从不使用其他的。因为第一种形式让它看起来像是一个数组类型,但实际上你拥有的是一个指针。这是误导。

关于c - 为什么可以在不定义长度的情况下在 C 中声明数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104620/

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