История изменений
Исправление beastie, (текущая версия) :
Просто вижу впервые)
На самом деле очень распространенный подход, конформный со строками заканчивающимися на '\0'. Да и проще гораздо. Сам сравни:
size_t nelem = sizeof(colortable) / sizeof(colortable[0]);
int i;
for (i = 0; i < nelem; i++) {
puts(colortable[i].name);
}
struct ColorTable *cp;
for (cp = colortable; cp->name != NULL; cp++) {
puts(cp->name);
}
При этом, как уже сказали выше, первый подход работает только со «статическими» массивами, а второй как со «статикой», так и с «динамикой» (malloc).
Исправление beastie, :
Просто вижу впервые)
На самом деле очень распространенный подход, конформный со строками заканчивающимися на '\0'. Да и проще гораздо. Сам сравни:
size_t nelem = sizeof(colortable) / sizeof(colortable[0]);
struct ColorTable *cp;
int i;
for (i = 0; i < nelem; i++) {
puts(colortable[i].name);
}
struct ColorTable *cp;
for (cp = colortable; cp->name != NULL; cp++) {
puts(cp->name);
}
При этом, как уже сказали выше, первый подход работает только со «статическими» массивами, а второй как со «статикой», так и с «динамикой» (malloc).
Исправление beastie, :
Просто вижу впервые)
На самом деле очень распространенный подход, конформный со строками заканчивающимися на '\0'. Да и проще гораздо. Сам сравни:
size_t nelem = sizeof(colortable) / sizeof(colortable[0]);
struct ColorTable *cp;
int i;
for (i = 0; i < nelem; i++) {
puts(colortable[i].name);
}
struct ColorTable *cp;
for (cp = colortable; cp->name != NULL; cp++) {
puts(cp->name);
}
Исходная версия beastie, :
Просто вижу впервые)
На самом деле очень распространенный подход, конформный со строками заканчивающимися на '\0'. Да и проще гораздо. Сам сравни:
size_t nelem = sizeof(colortable) / sizeof(colortable[0]);
struct ColorTable *cp;
for (i = 0; i < nelem; i++) {
puts(colortable[i].name);
}
struct ColorTable *cp;
for (cp = colortable; cp->name != NULL; cp++) {
puts(cp->name);
}