开发者社区> 问答> 正文

结构有什么特别之处?

我知道在C语言中,我们不能从函数返回数组,而只能返回指向数组的指针。但是我想知道有什么特别之处structs,即使它们可能包含数组,它们也可以由函数返回。

为什么struct包装使以下程序有效?

#include <stdio.h>

struct data { char buf[256]; };

struct data Foo(const char *buf);

int main(void) { struct data obj; obj = Foo("This is a sentence."); printf("%s\n", obj.buf); return 0; }

struct data Foo(const char *buf) { struct data X; strcpy(X.buf, buf); return X; } 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 14:37:05 401 0
1 条回答
写回答
取消 提交回答
  • 提出相同问题的一种更好的方法是“数组有什么特别之处”,因为是数组具有附加的特殊处理,而不是structs。

    通过指针传递和返回数组的行为可以追溯到C的原始实现。数组“衰减”到指针,引起了很多混乱,尤其是在刚接触该语言的人们中。另一方面,结构的行为类似于内置类型,例如ints,doubles等。这包括嵌入在中的任何数组struct,但灵活的数组成员除外,这些数组不会被复制。

    2020-02-08 14:37:15
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
为并行图数据处理提供高层抽象/语言 立即下载
数据+算法定义新世界 立即下载
继承与功能组合 立即下载