这个问题与以下问题有关: What does (char *)0 mean in c?
那里的答案略微偏离了解释答案具体含义的方向,但最终的答案提到它是指向地址为0的字符指针,并且它是空的。这让我产生了两个疑问。
在c语言中,我们能给char* 9并说它是一个指向地址9的指针吗?我们会得到任何错误或警告吗?
好吧,假设(char*)0确实是一个指向地址0的字符指针,但是这个地址0是什么意思呢?我的意思是,我们怎么知道它是空的?如果这样的话,(char*)1或(char*)2等的值会是什么?
编辑:
只是为了放在这里,无论是否有帮助。当我发现linux系统调用execl
的最后一个参数为空时,我找到了这个问题,并且我看到了一个相当奇怪的语法:(char *) 0。
谢谢。
char *p = (char *)9;
(没有警告),但是你不能对其进行解引用,参见 http://c-faq.com/null/。 - David Ranieri0
的指针,空指针实际上是系统相关的。然而,当整数零被转换为指针(任何指针)时,编译器会将其转换为系统相关的空指针。 - Some programmer dude