我想将ptr传递给函数,并让函数确定值是数字还是NULL
。这样做的原因是为了避免编写两个函数来检查来自C的内置函数的常见返回错误指示符。
目前,我正在使用两个重复的函数来检查int
的{{1}}和-1
char *ptr
的{{1}}。这有点违反DRY,因为两个函数的操作在测试之外是相同的。我考虑过编写第3个函数来处理动作,但我想与社区核实一下是否有更好的方法。
我想要完成的示例代码:
NULL
答案 0 :(得分:0)
根据您的代码,如果没有分配指针,当您尝试将其引用时,它将崩溃。因此在比较整数值之前更好地验证指针值。
#include <stdio.h>
// pass a pointer
int foo(int *ptr) {
// match for int by dereference or if ptr is null
if (ptr == NULL)
{
printf("match\n");
}
else if(*ptr == -1 )
{
printf("match\n");
}
return 0;
}
int main() {
// make a an int
int a = -1;
// attempt to make int null?
a = NULL;
foo(&a);
return 0;
}
答案 1 :(得分:0)
或者你可以改变这样的条件顺序:
//传递一个指针 int foo(int * ptr){
// match for int by dereference or if ptr is null
if ((ptr == NULL) || (*ptr == -1)) {
printf("match\n");
}
return 0;
}
包含NULL指针,条件匹配,无需取消引用。