将 0x00 分配给 C 中的数组?

assigning 0x00 to an array in C?

我正在阅读他们有这个的幻灯片:

int current = 0;
buffer[current]=0x00;

其中 buffer 只是一个字符数组 char buffer[300];

如果0x00是null的表示,我们用NULL替换它buffer[current]=NULL编译时出现如下错误:

assignment makes integer from pointer without a cast

谁能解释一下 buffer[current]=0x00; 是什么意思?这会检查数组列表的结尾吗?

NULL 是一个扩展为实现定义的空指针常量的宏。

这两个定义都对NULL有效:

#define NULL  0

#define NULL  ((void *) 0))

如果你的编译器使用了后者:

char buffer[300];
buffer[current]=NULL;

您的程序无效,因为您无法将指针值分配给整数对象。

((void *) 0)是一个指针类型的值。使用 0 或等效的十六进制值 0x000 分配给整数对象。

我认为 assignment makes integer from pointer without a cast 是 GCC 中的编译器警告,NULL 几乎是为 0x0 定义的:

#define NULL 0

#define NULL (void *)0

所以在后面的情况下,如果您将 NULL 分配给整数而不是指针,您会在 GCC 中收到编译器警告。