【发布时间】:2017-09-27 04:51:26
【问题描述】:
我知道 C 中字符串的定义是字符串末尾必须有 NUL 字符。我也知道以下语句会创建字符串的 NUL 字符:
str[4] = 0;
str[4] = '\0';
但是,当你使用这个语句时
str[4] = NULL;
我收到这条消息:
string1.c:15:12: warning: assignment makes integer from pointer
without a cast [enabled by default]
我对NULL的理解是它是一个定义为((void *)0)的宏。现在为什么这个分配会导致这个警告信息?这个警告信息的真正含义是什么?有人可以翻译这条消息以便更容易理解吗?
【问题讨论】:
-
NUL 是一个字符,它在 C 中是一种整数类型。 NULL 是一个指针。这有帮助吗?
-
@zwol - 有没有办法对字符串使用 NULL 而不会收到此警告消息?
-
@Nguai al - 为什么要将 NULL 分配给字符? NULL 用于指针。如果你想要
\0字符,直接使用它而不是使用宏NULL。 -
@Nguaial 当然有。但是在这里,您尝试将
NULL分配给str[4],这是一个字符。你可以这样做:const char *j = "hello"; j = NULL;。这里j是一个字符串,然后您将NULL分配给。
标签: c