gpt4 book ai didi

c - 数组初始化程序返回什么?

转载 作者:太空狗 更新时间:2023-10-29 16:45:59 24 4
gpt4 key购买 nike

{ 'a', 'b', 'c' } 等数组初始化器返回什么?我的理解是使用初始化程序分配连续的内存块并将地址返回到第一个 block 。

以下代码无效:

char *char_ptr_1 = { 'a', 'b', 'c', '\0' };

另一方面,这似乎工作正常:

char char_array[] = { 'a', 'b', 'c', '\0' };
char *char_ptr_2 = char_array;

char_array 将地址存储到第一个内存块,这解释了为什么我能够将 char_array 的值分配给 chat_ptr_2。 C 是否将初始化程序返回的值转换为可以存储在指针中的值?

我确实在网上查看并找到了几个讨论数组和指针之间区别的答案,但它们对我没有帮助。

最佳答案

初始化器本身不返回任何东西。它们向编译器指示要将什么放入所声明的项目中 - 在这种情况下,它们告诉编译器将什么放入数组的元素中。

这就是为什么不能将初始化器分配给指针的原因:数组初始化器需要与数组配对才能对编译器有意义。

指针可以用指针表达式来初始化。这就是为什么在你的初始化

char *char_ptr_2 = char_array;

声明有效:编译器将 char_array 转换为指针,并用它初始化 char_ptr_2

关于c - 数组初始化程序返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268959/

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