Каков наилучший способ инициализации массива строк в c?Каков наилучший способ инициализации массива строк в c?
Я попытался следующие две вещи
char arr[10] = "\0";
char arr1[10] = {"\0"};
После инициализации эти строки, я попытался показать в БГД, оба дали один и тот же формат инициализации.
(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
Поправьте меня, если я ошибаюсь, но AFAIK они эквивалентны. – 2013-03-05 10:50:50
Вы сравнили разборку и видите разницу на этом уровне? –
@BarathBushan Я плохо разбираюсь в сборке. Позвольте мне также опубликовать мой ассемблерный код. – Thangaraj