永发信息网

C语言<null>是什么

答案:4  悬赏:30  手机版
解决时间 2021-04-04 10:53
  • 提问者网友:眉目添风霜
  • 2021-04-03 19:07
以下程序
#include
main()
{char a[7]="Foxpro";
printf("%s\n");
printf("%c%c%c\n",a[0],a[1]),a[2];
}

输出结果的第一行是是什么意思?
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-04-03 20:46
在头文件 中 定义的一个常量 NULL=0;

用于指将指针 悬空(不指向任何位置)楼上的指向0内存不对的.
int *p=NULL;
NULL是个好东西,给一出生的指针一个安分的家

NULL总是被定义为0吗?

NULL不是被定义为o,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。

NULL总是等于0吗?
对这个问题的回答与“等于”所指的意思有关。如果你是指“与。比较的结果为相等”,例如:
    if()
    {   
        p=NULL;
    }   
    else   
    {
        p=;
    }
    
    if(p==0)
那么NULL确实总是等于0,这也就是空指针定义的本质所在。

如果你是指“其存储方式和整型值。相同”,那么答案是“不”。NULL并不必须被存为一个整型值0,尽管这是NULL最常见的存储方式。在有些计算机中,NULL会被存成另外一些形式。

如果你想知道NULL是否被存为一个整型值0,你可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果你将一个空指针强制转换成整类型,那么你所看到的很可能就是一个非零值)。
全部回答
  • 1楼网友:封刀令
  • 2021-04-04 00:01
你用 百分号+s 是要打印一个字符串对不对,可是你在 printf("%s\n"); 里面写入你要打印的字符串了吗? 因此该函数在堆栈里没有找到你要打印的字符串指针 ,于是就打印了 null ,表示出现了一个错误
  • 2楼网友:酒者煙囻
  • 2021-04-03 23:18
printf("%s\n"); 既然用了格式控制符 %s 后面就必须跟上char* 参数 比如 printf("%s\n", “123123123”); 要么就把%s去掉 改成printf("\n"); printf 后面参数的个数 和前面的%个数一定要一样,如果不一样,特别是参数小于%的个数,那么久会出现 表示格式化参数的时候,找不到要格式化的参数。
  • 3楼网友:青灯有味
  • 2021-04-03 21:50
null在实际的底层代码中就是0。

比如
int *p; // 这时候p的值由系统分配
p=null;

则p实际在bebug窗口看到的结果为0x00000000。

--------------------------------

关于你的代码:
(1) if(fp=("i:\\woailuo.c","r"==null) 写错,没写fopen,还少个括号
(2) 注释格式应该是

fopen函数的作用是按照一定格式打开一个文件,如果打开成功,则返回该文件的指针,如果失败,则返回空指针(null,或者可以直接认为是0)。

所以,判断文件打开失败与否,应该这样写:
if( ( fp=fopen("somefile.dat","r") ) != null )
 
else 
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯