c函数的可能返回类型

时间:2014-12-21 16:39:52

标签: c function return-value

C中可能的数据类型有哪些 除了void,int,float,char double,long,struct

我正在编写一个正则表达式(脚本)来检测函数体的启动。 我需要返回类型,以便我可以通过将返回类型与函数名称连接起来来获取函数体

4 个答案:

答案 0 :(得分:3)

C函数可以返回以下任何内容:

  • 整数数据类型(_Bool C99 / char / short / int / long / long long和signed / unsigned variants)
  • 浮点数据类型(float / double / long double [和_Complex variants] C99
  • 结构和联合值(类型struct ...union ...的值)
  • 枚举值(类型enum ...的值)
  • 指向任何上述指针(以及指向任何指针的指针)
  • 函数指针
  • 空隙

在任何级别都有可选的const和/或volatile限定条件。当然也允许任何此类型的Typedef名称。

值得注意的是,C函数不能返回函数类型的值,也不能返回数组类型的值(尽管它可以分别返回包含数组的函数指针和结构)。

答案 1 :(得分:1)

任何(完整的)对象类型或void(数组类型除外)都可以由函数返回。通过structenum关键字,程序员可以创建新类型,因此可能有无数种类型的函数可以在C中返回。

答案 2 :(得分:0)

函数可以返回void或完整的非数组对象类型,包括用户定义的类型。

具体而言,禁止以下内容:

typedef int f();     // function type
typedef int a[10];   // array type
struct X;            // incomplete, non-array object type

// f foo1();         // Error, function returning function
// a foo2();         // Error, function returning array

// struct X foo3(){} // Error, attempting to define function with incomplete
                     // return type

struct X foo4();     // OK, can *declare* a function with incomplete return type

答案 3 :(得分:0)

除数组外,函数可以返回任何类型的值。

如果在结构体内,则可以返回数组。

struct innerarray {
    double values[100];
};

struct innerarray fx(void) {
    struct innerarray retval;
    for (int k = 0; k < 100; k++) retval.values[k] = k;
    return retval;
}