我有一个具有以下原型(prototype)的函数 void init(int *argc,char**argv);
但是在我的程序中对该函数的后续调用我不需要甚至没有需要提供这样的论据。所以我创建了一个名为 int_null
的变量(哦,坏名字,我知道)并传递给函数 init(&int_null, NULL)
但我想到 NULL
按标准具有零值,我可以使用它代替 int_null
变量(只是为了避免创建此变量),如以下 init(NULL,NULL)
它工作正常。但是我能有什么问题吗?一些实现将 NULL
定义为 (void*)0
或 0
或 0L
我确定它是否可以成为一个问题。该函数需要了解 argc
为零。
最佳答案
char **bla1 = (void *) 0;
char **bla2 = 0;
char **bla3 = 0L;
所有这些赋值(初始化根据赋值完成)在 C 和等价物中有效。
如果期望的参数是 int *
或 char **
类型,您可以始终传递 NULL
。
作为@R..在他的评论中补充说,最后一句话是正确的,但接受可变数量参数的函数和原型(prototype)(旧式)语法中定义的函数除外。在这两种情况下都需要强制转换。
关于我可以在需要 int* 的地方传递 NULL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295590/