⑴ c语言传递函数指针参数能否传递NULL
可以,但子函数中要谨慎处理,不然会出问题,如
int fun( int *p )
{
//if ( *p !=0 ) 错误的引用方法,会导致程序异常
if ( p && *p ) //正确的引用方法,保证p不是NULL时才读。
return 1;
return 0;
}
void main()
{
int x=fun(NULL) ;
}
经常用到的time(NULL); 也是传NULL指针的一个应用。
⑵ C语言中的NULL
C语言NULL定义,定义如下:
#undef
NULL
#if
defined(__cplusplus)
#define
NULL
0
#else
#define
NULL
((void
*)0)
#endif
所以我觉得,如果一个指针被赋予NULL,应该就相当于这个指针执行了0x0000这个逻辑地址,但是C语言中0x0000这个逻辑地址用户是不能使用的(有些人说是因为0x0000没有映射到物理地址,也有人说是因为0x0000映射到的地址是操作系统用于判断野指针的,我也不太懂,总之就是用户不能使用啦),所以当你试图取一个指向了NULL的指针的内容时,就会提示段错误,听着有点绕,看程序:
int
*node=NULL;
int
a=0;
a=*node;
printf("%d\n",a);
由于node执行的是NULL,也就是逻辑地址0x0000,而这个地址用于是不能访问的,所以编译器提示段错误。
⑶ C语言time(NULL)是什么样的怎么用NULL作为参数就是当前时间
C语言time(NULL)是以当前时间为种子,产生随意数。
其中,time(NULL)用来获取当前时间,本质上得到的是一个大整数,然后用这个数来随机数。
time()这个函数其实保存的是一个历史时间,所以需要用NULL把这个历史时间清空一下,time()就会自动保存当前时间了。你可以简单的理解为NULL就是给time()初始化。
⑷ C语言中NULL有什么作用具体用法是什么
NULL 其实就是 #define NULL 0 也就是说它就是0 不过是写代码的时候为指针什么的赋值或判断指针是否为空时看起来直观一些。
⑸ c语言如何给指针参数赋值为null
用指针的引用即可.
例如:
int
memnull(int
*¶m)
{
param
=
NULL;
return
0;
}
在另一个函数里调用它:
int
*a;
memnull(a);
memnull运行完之后a的地址就被修改为NULL了.
或者可以用指针的指针:
int
memalloc(int
**param)
{
*param
=
NULL;
return
0;
}
调用的时候这样调用:
int
*a;
memnull(&a);
这样memnull函数运行完后a的地址也会被修改为NULL.
同理其他操作,申请空间,改变指向等,也可以用指针的引用和指针的指针这两种方法完成.不过还是推荐指针的引用,在写代码时不容易写错.
⑹ c语言如何给指针参数赋值为null
楼主 其实很简单,例如你定义一个int a;
然后把&a的带入你的函数中,函数的形参为int *p;
在函数中把*p=null,不过最好是用宏定义,把null定位0;
这样a变量的地址所指向的值就变为0了
你要是有什么不懂得可以找我
⑺ c语言函数声明中将函数指针参数设置为NULL的默认值
指定形参默认值是C++的语法,标准C是不支持这种语法的。
使用c++语法,通常可以保存文件时使用CPP后缀保存。
另外,形参的默认值是在声明函数原型的时候指定,不是在函数定义的时候指定。