加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 数组初始化器返回什么?

发布时间:2020-12-16 03:18:58 所属栏目:百科 来源:网络整理
导读:阵列初始化程序如{‘a’,’b’,’c’}返回?我的理解是,使用初始化器分配连续的内存块并将地址返回到第一个块. 以下代码不起作用: char *char_ptr_1 = { 'a','b','c','' }; 另一方面,这似乎工作正常: char char_array[] = { 'a','' };char *char_ptr_2
阵列初始化程序如{‘a’,’b’,’c’}返回?我的理解是,使用初始化器分配连续的内存块并将地址返回到第一个块.

以下代码不起作用:

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

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

char char_array[] = { 'a','' };
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读