Пожалуйста, смотрите следующие инструкции:Разница между массивом инициализациями
char a[5]="jgkl"; // let's call this Statement A
char *b="jhdfjnfnsfnnkjdf"; // let's call this Statement B , and yes i know this is not an Array
char c[5]={'j','g','k','l','\0'}; // let's call this Statement C
Теперь, есть ли разница между операторами А и С? Я имею в виду, что оба должны быть на Stack, не так ли? Только b будет находиться в положении Static.
Не так ли, чтобы «jgkl» существовали в статическом месте на всю жизнь программы? Так как предполагается, что он доступен только для чтения/постоянный? Просьба уточнить.
@strut Нет - они не являются, они представляют собой как массивы, содержимое которых может быть изменено после инициализации, так как содержимое b не может быть изменено. Вы не понимаете, что читаете. – 2010-08-07 12:11:54
@strut В 'a [] =" foo "', a является массивом, "foo" является литералом. – 2010-08-07 14:22:36