C中的“{0}”是什么?

时间:2011-08-15 11:17:40

标签: c

char buf[MAXDATASIZE] = { 0 }; {0}的含义是什么?

尝试将其打印出来,但它什么都没打印出来。

#include <stdio.h>

int main(void)
{
        char buf[100] = { 0 };
        printf("%s",buf);
        return 0;
}

2 个答案:

答案 0 :(得分:12)

这只是数组的初始化列表。所以它非常像普通的语法:

char buf[5] = { 1, 2, 3, 4, 5 };

但是,C标准规定,如果在初始化列表中没有提供足够的元素,它将默认初始化其余元素。因此,在您的代码中,buf的所有元素最终都会初始化为0

printf不显示任何内容,因为buf实际上是零长度字符串。

答案 1 :(得分:2)

您正在为缓冲区分配一个数组。

在字符串的特殊情况下,通常,ASCII值为0的字符会终止字符串。

例如,如果你想在字符串中放入一个读取'Hello world'的字符串,你可以做到

char buf[100] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', 0};

char buf[100] = "Hello world";

无论如何,你的代码什么都不打印,因为你试图打印一个长度为零的字符串,这是一个空字符串。