Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Массив массивов типа char...


Автор: PostEr 23.8.2003, 14:42
делаю так
Код

const char vprog [8][] = {
{"!!VP1.0"},
{"DP4  o[HPOS].x, c[0], v[OPOS];"},
{"DP4  o[HPOS].y, c[1], v[OPOS];"},
{"DP4  o[HPOS].z, c[2], v[OPOS];"},
{"DP4  o[HPOS].w, c[3], v[OPOS];"},
{"MOV  o[COL0], v[COL0];"},
{"MOV  o[TEX0], v[TEX0];"},
{"END;"}}


естесно не прально, но какconfused.gif!!!

Автор: RAN 23.8.2003, 16:58
Я в своих программах часто делаю так:
Код

const char *const vprog [] = {
   "!!VP1.0",
   "DP4  o[HPOS].x, c[0], v[OPOS];",
   "DP4  o[HPOS].y, c[1], v[OPOS];",
   "DP4  o[HPOS].z, c[2], v[OPOS];",
   "DP4  o[HPOS].w, c[3], v[OPOS];",
   "MOV  o[COL0], v[COL0];",
   "MOV  o[TEX0], v[TEX0];",
   "END;"};

Теперь vprog[1] - это указатель на строку "DP4 o[HPOS].x, c[0], v[OPOS];", например.

Что же это значит. В памяти будет сформирован массив указателей на строки. То есть, это займёт в памяти 32-разрядной системы не меньше

4 * <кол-во строк> + <кол-во символов во всех строках, вместе взятых>

Второй вариант const char arr[][32] = { "строка из 31 символа...........", "ещё одна строка из 31 символа.." }; (31 символ + нулевой байт = 32 байта)
В этом случае массив займёт 32 * <кол-во строк в памяти>, но кол-во символов должно быть во всех строках одинаково.

Выбирай

Автор: PostEr 23.8.2003, 21:45
Понятно! smile.gif Я понимаю как размещается в памяти, но не понял просто как записать в си smile.gif Мудрёно...

Автор: PostEr 23.8.2003, 21:47
Вот ещё ксстати:

char VP_Transform[] =
"!!VP1.0"
"DP4 o[HPOS].x, c[0], v[OPOS];"
"DP4 o[HPOS].y, c[1], v[OPOS];"
"DP4 o[HPOS].z, c[2], v[OPOS];"
"DP4 o[HPOS].w, c[3], v[OPOS];"
"MOV o[COL0], v[COL0];"
"MOV o[TEX0], v[TEX0];"

"END";

можна так для моих задач smile.gif

Автор: RAN 24.8.2003, 00:01
Только не char VP_Transform[], а char* VP_Transform[] и настоятельно рекомендую поставить const'ы:
const char *const VP_Transform[] = { "!!VP1.0", .......... , "END;" };

Автор: PostEr 24.8.2003, 08:48
А нафига мне консты, если после инициализации массива у меня вызывается загрузка этой вертексной программы в память видюхи. Послетого, как это произошло, этот массив можно выкинуть...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)