我可以在需要 int* 的地方传递 NULL 吗?

标签 c pointers null function-prototypes

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

相关文章:

c++ - 将正符号变量替换为无符号变量

C 将选项连接到 CAT 程序?

c - 在struct中初始化函数指针

c# - IDictionary w/Null Key - MSDN 拼写错误或其他问题?

.net - 如何更改 .NET DateTimePicker 控件以允许输入空值?

c++ - GCC:使用旧 C 代码时出现链接器错误

c - 了解文件指针和缓冲区

c - 从c中的文件填充指针数组

字符串和数字的组合在c中无法正确比较

Java null 检查为什么使用 == 而不是 .equals()