Не заключайте мне в кавычки на этом, но консоль API Win32 могла бы быть тем, что Вы ищете. Если Вы просто делаете это для отладки целей, однако, Вы могли бы больше интересоваться выполнением DebugView и вызов функция DbgPrint.
Это, конечно, принимает его Ваше заявление, которое Вы хотите послать консольному выводу, не читая его из другого приложения. В этом случае каналы могли бы быть Вашим другом.
Нет, вы можете инициализировать массив только при первом его объявлении. Причина в том, что массивы не являются изменяемыми lvalue.
В вашем случае:
char *array[] = {"blah", "blah", "blah"};
Вам не нужно указывать размер, но вы можете, если хотите. Однако в этом случае размер не может быть меньше 3. Кроме того, три строки записываются в постоянную память, поэтому что-то вроде array [1] [2] = 'c'
, чтобы изменить второе «blah» на «blch»
Это выражение инициализатора. Этот код не может быть между ними, его нужно использовать в строке с объявлением.
Да, вы можете объявить массив, а затем инициализировать его.
Однако здесь есть исключение.
Вы объявляете массив символьных указателей (который работал нормально).
И затем вы создаете экземпляры константных строк, чтобы назначить их массиву .
Вот где начинается проблема.
Постоянные строки - это просто примитивы компилятора, которые не получают адресуемой области памяти в том виде, как вы их использовали. Их можно назначить прямо во время инициализации массива (как показал Майк
); который проинструктирует компилятор выделить их как константы, доступные во время выполнения, и разрешить инициализацию при запуске области myArray
.
То, что вы пробовали, хорошо работало бы с
int numberArray[3];
// code here
numberArray[0] = 1;
numberArray[1] = 2;
numberArray[2] = 3;
. обратите внимание, что указатель на символ и экземпляр строки - это две разные сущности; первое может указывать на второе.
Вы ошиблись. Инициализация возможна только в объявлении . После этого вы можете назначать только отдельные значения.
Как уже говорили другие, вы можете использовать инициализаторы только при объявлении переменной. Ближайший способ сделать то, что вы хотите:
char *myArray[3];
/* CODE INBETWEEN */
{
static const char *tmp[3] = {
"blah",
"blah",
"blah" };
memcpy(myArray, tmp, sizeof myArray);
}