【发布时间】:2021-08-09 09:19:09
【问题描述】:
我总是得到下面程序的输出为“b is not NULL”。当我尝试打印 a 或 b 的值时,它们绝对是空白的。知道为什么会这样吗?
#include <stdio.h>
int main()
{
char a[10];
char *b = a;
if(b == NULL)
printf("b is NULL");
else
printf("b is not NULL");
return 0;
}
【问题讨论】:
-
你能更精确一点吗? “绝对空白”是什么意思?在您的代码中,
b将是数组的地址(该值可能看起来很奇怪,但不会为零);如果您打印a的任何元素,它们将具有未定义的值(因为您没有给它们任何值)。 -
b包含a的地址(更准确地说,是a的第一个元素的地址)。它永远不会是NULL,因为a显然有一个非NULL 地址。至于打印a的值,您需要先将它们设置为某个值,然后才能有意义地打印它们。否则,您将打印未定义的值。 -
真正的问题是你为什么认为它会是 NULL?
标签: arrays c pointers implicit-conversion