У меня есть функция, которая работает, но я хотел бы знать, почему static char out[0];
не создает предупреждение, когда ему нужно выделять статическую память в объеме? Что такое правильное значение для размера out
в этом примере ?:Правильный размер статического массива
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *hex(char *s)
{
int i, l = (int)strlen(s);
static char out[0]; // should it be 7 ?
for(i = 0; i < l; i++) {
s[i] -= 5;
sprintf(&out[i*6], "0x%02x, ", (unsigned char)s[i]);
}
return out;
}
int main(void)
{
char s[] = "hello";
printf("%s", hex(s)); // 0xa8, 0xa5, 0xac, 0xac, 0xaf,
return 0;
}
Нулевой размер массива не является причиной того, что это не вызывает предупреждения. http://ideone.com/ejmIdU –
Ok malloc - бог, у меня есть ответ на первый вопрос, спасибо. К второму вопросу я не должен использовать ноль, так что будет правильным значением? В этом случае я намерен использовать статический символ для моего понимания. – pipe3r
@HansZ Есть несколько вопросов, на данный момент я думаю, что я обратился ко всем из них. Если у вас есть более конкретные вопросы, дайте мне знать. –