我有一个可以工作的函数,但我想知道为什么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;
}