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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容