是否有可能获得一个函数来返回一个int或一个char *取决于执行时发生的事情?我尝试过无效,但在汇编时我得到了很多警告
示例
---
layout: default
title: Your website name
permalink: /about/
---
我希望我足够清楚。 PS:我是C编程的初学者
答案 0 :(得分:5)
设计这样一个功能的理智方法是:
char* get_buffer (const char *str)
{
if (I'm matching a condition in my string)
return buffer;
else
return NULL;
}
(假设缓冲区不是局部变量)
答案 1 :(得分:2)
不,函数只能返回单个类型的值。但是你可以使用专门的类型:
struct result {
int numeric;
union {
const char* string;
int number;
} value;
};
struct result
do_something()
{
struct result r;
if (...) {
r.numeric = 1;
r.value.number = 10;
} else {
r.numeric = 0;
r.value.string = "Foo!";
}
return r;
}
答案 2 :(得分:0)
尝试返回void*
。它代表一个通用指针
更多信息:https://msdn.microsoft.com/en-us/library/fxky5d0w.aspx
您还可以尝试struct
或union
并返回其中一个。有关详细信息,请参阅this
答案 3 :(得分:0)
一般来说,这是不可能的 - 即
char *f() {
return 13;
}
是不允许的。但是,零是一种特殊情况(它表示'空指针',它不指向任何东西)。所以
char *f() {
return 0;
}
的工作原理。你的代码草图表明你想要返回一个空指针,具体取决于某些条件是否为真,所以这可能就是你想要的。
答案 4 :(得分:0)
我建议使用包含所有必需返回值的相应get / set方法的类,或者使用union作为返回数据类型。然后在语义上更明显的是如何解释返回的数据。