我有一个具有以下原型的函数,void init(int *argc,char**argv);
但是在我的程序中对该函数的后续调用中,我不需要甚至不需要提供这样的参数。所以我创建了一个名为int_null
(哦,坏名字,我知道)的变量并传递给函数init(&int_null, NULL)
,但我想到NULL
标准值为零,我可以使用它代替int_null
变量(只是为了避免创建这个变量),因为跟随init(NULL,NULL)
它工作正常。但我能有什么问题吗?一些实现定义NULL
为(void*)0
或0
或0L
,我确定这是否可能是一个问题。该函数需要理解argc
为零。
问问题
213 次
2 回答
5
char **bla1 = (void *) 0;
char **bla2 = 0;
char **bla3 = 0L;
所有这些分配(根据分配完成初始化)在 C 和等效项中都是有效的。
NULL
如果预期参数的类型为int *
or ,则始终可以传递char **
。
正如@R..在他的评论中添加的那样,最后一句话是正确的,但接受可变数量参数的函数和原型(旧式)语法中定义的函数除外。在这两种情况下都需要演员表。
于 2013-01-12T17:02:30.420 回答
2
NULL
应该管用; 两者0
都(void *)0
可以分配给 C 中的任何指针类型。
于 2013-01-12T17:00:38.567 回答