gpt4 book ai didi

c - arr 指针和 arr 表示法之间的区别

转载 作者:行者123 更新时间:2023-11-30 21:07:30 26 4
gpt4 key购买 nike

(C语言)之间有什么区别

int * a
int [] a;

假设我们做了int * a = malloc(...)

第二个不也是一个指针吗?

最佳答案

就目前情况而言,第二个只是一个语法错误。你能做的最接近的是 int a[];然而,即便如此,它也是允许的——对于变量定义,括号需要包含具有严格正值的常量表达式。

对于函数参数,int a[]会被允许,像 int a[3] 这样的东西也会被允许。 。在这种情况下,当您定义类型为 array of T 的函数参数时,两者完全相同。 ,调整为类型pointer to T .

您还可以进行extern声明:

extern int *a;
extern int b[];

在这种情况下,两者实际上在语法上都是有效的,但结果不同——您声明 a类型为pointer to int ,而b类型为array of int .

如果在表达式中计算数组的名称,它通常会生成该数组的第一个元素的地址(尽管有一些异常(exception),例如用作 sizeof 的参数时)。不过,数组本身没有这种类型——您所看到的至少类似于隐式转换,有点类似于 2 + 10.0 ,转换 2double在进行添加之前--2本身就是一个int ,但在这个表达式中,它会默默地转换为 double .

关于c - arr 指针和 arr 表示法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353439/

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