Я смущен о массиве SizeOf строки в C++, я следующая строка массива:SIZEOF массив строк в C++
static const char* namedButtonStr[] = {
"GLUT_LEFT_BUTTON",
"GLUT_MIDDLE_BUTTON",
"GLUT_RIGHT_BUTTON"
};
И получить размер этого массива, используется следующий код:
int size = int(sizeof(namedButtonStr)/sizeof(namedButtonStr[0]));
Где sizeof(namedButtonStr)
12, sizeof(namedButtonStr[0])
является 4, а размер массива 12/4 = 3.
Мой вопрос, почему sizeof(namedButtonStr)
12 и sizeof(namedButtonStr[0])
- 4? Мое понимание sizeof(namedButtonStr)
is 3 и sizeof(namedButtonStr[0])
is 17 («GLUT_LEFT_BUTTON» имеет 17 символов).
Если вы пишете на C++, почему бы не написать реальный C++, и использовать что-то вроде: 'станд :: вектор namedButtons = { "GLUT_LEFT_BUTTON", "GLUT_MIDDLE_BUTTON", "GLUT_RIGHT_BUTTON"}; '. В этом случае количество строк - это просто 'namedButtons.size()'. –
'namedButtons' - это массив указателей, а не массив строк. Каждый элемент указывает на первый символ строки. –
@Hi, я новичок в C++, я изучаю «OpenGL», этот код пришел от моего учителя, должна быть причина, по которой он создал такой массив строк, можете ли вы это объяснить? – Tom