"blah"
является const char [5]
. В первой строке этот массив распадается на указатель, который будет храниться в вашей переменной как указатель на первый элемент. Он также является указателем на не-const символы, которые указывают на const-символы. Оно должно быть:
const char *sz1 = "blah";
Во втором (спасибо Джрок), он создает реальный массив и инициализирует его с {'b', 'l', 'a', 'h', '\0'}
.
char *sz3 = new char[512];
Это выделяет 512 * sizeof (char)
байт памяти для символов и sz3
будет указывать на начало. Это сохраняется в куче, в отличие от стека, поэтому не забудьте указать delete[]
.
char *sz4[512] = { 0, };
Это создает массив из 512 указателей на символы и инициализирует их все до 0 (NULL). Запятая не нужна, ее легче добавить в список инициализаторов. spiral rule может использоваться здесь для определения sz4 is an array of 512 (one right) pointers (one left) to char (two left)
.
char sz5[512];
Это создает массив (в стеке) из 512 символов.
Все, кроме второго, могут быть заменены на std::string
.
Возможно, вы могли бы начать и посмотреть, как далеко вы доберетесь, а затем другие помогут вам с частями, которые вы ошибаетесь. –
Клянусь, этот точный вопрос был задан только вчера. –
Это домашнее задание? – Saphrosit