1

我有一个具有以下原型的函数,void init(int *argc,char**argv);但是在我的程序中对该函数的后续调用中,我不需要甚至不需要提供这样的参数。所以我创建了一个名为int_null(哦,坏名字,我知道)的变量并传递给函数init(&int_null, NULL),但我想到NULL标准值为零,我可以使用它代替int_null变量(只是为了避免创建这个变量),因为跟随init(NULL,NULL)它工作正常。但我能有什么问题吗?一些实现定义NULL(void*)000L,我确定这是否可能是一个问题。该函数需要理解argc为零。

4

2 回答 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 回答