gpt4 book ai didi

c - 在 c 中初始化字符串数组的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:00:12 24 4
gpt4 key购买 nike

在 c 中初始化字符串数组的最佳方法是什么?

我尝试了以下两件事

char arr[10] = "\0";
char arr1[10] = {"\0"};

初始化这些字符串后,我尝试在 gdb 中显示,两者都给出了相同的初始化格式。

(gdb) p arr
$1 = "\000\000\000\000\000\000\000\000\000"
(gdb) p arr1
$2 = "\000\000\000\000\000\000\000\000\000"
(gdb)

我想知道哪个是最好的,优点和缺点是什么。

代码:-

int main(){
char arr[10] = "\0";
char arr1[10] = {"\0"};

return 0;
}

程序集:-

(gdb) disass main
Dump of assembler code for function main:

0x00000000004004ec <+0>: push %rbp
0x00000000004004ed <+1>: mov %rsp,%rbp
0x00000000004004f0 <+4>: movzwl 0xd5(%rip),%eax # 0x4005cc
0x00000000004004f7 <+11>: mov %ax,-0x10(%rbp)
0x00000000004004fb <+15>: movq $0x0,-0xe(%rbp)
0x0000000000400503 <+23>: movzwl 0xc2(%rip),%eax # 0x4005cc
0x000000000040050a <+30>: mov %ax,-0x20(%rbp)
0x000000000040050e <+34>: movq $0x0,-0x1e(%rbp)
0x0000000000400516 <+42>: mov $0x0,%eax
0x000000000040051b <+47>: pop %rbp
0x000000000040051c <+48>: retq

最佳答案

两个初始化是完全等价的。来自标准:

An array of character type may be initialized by a character string literal or UTF−8 string literal, optionally enclosed in braces.

关于c - 在 c 中初始化字符串数组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15221838/

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