所以说我有一个只有几个值的基本结构:
struct my_struct {
int val1;
int val2;
}
我希望将它传递给函数
int test_the_struct(struct my_struct *s);
然后在该函数内部检查NULL并返回错误代码,但是如果传递一个空结构,我希望它继续。例如:
struct my_struct *test_struct = (struct test_struct *) calloc(1, sizeof(struct test_struct));
test_the_struct(NULL); //this should fail
test_the_struct(test_struct); //this should not fail
我怎么能区分这两者?在这种情况下,我不能改变my_struct
答案 0 :(得分:2)
如果我理解正确,你就不会有问题。
只需检查针对NULL
的指针即可。
int test_the_struct(struct my_struct *s)
{
if (s) { // or if (s != NULL) or whatever you want to express it...
return s->val1 + s->val2;
} else {
return 42;
}
}
如果您使用test_struct
调用它,则两个值均为0
。它没有任何错误或特殊之处。
答案 1 :(得分:0)
要查找指针s
是否为空,您可以使用
if (s) {
/* not null */
} else {
/* is null */
}
指向"空"的指针struct不为null。
答案 2 :(得分:0)
设计你的功能如下
int test_the_struct(void *ptr)
{
if (ptr == NULL)
return -1; //error
else
return 0;
}