相关疑难解决方法(0)

结构有什么特别之处?

我知道在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;
}
Run Code Online (Sandbox Code Playgroud)

c arrays struct return return-value

81
推荐指数
3
解决办法
4443
查看次数

为什么我们不能通过值传递数组?

显然,我们可以将复杂的类实例传递给函数,但为什么我们不能将数组传递给函数呢?

c++ arrays arguments function

45
推荐指数
4
解决办法
4万
查看次数

为什么C中的数组会衰减到指针?

[这是一个受到其他地方最近讨论的启发的问题,我会用它来提供答案.]

我想知道数组"衰减"指针的奇怪C现象,例如当用作函数参数时.这似乎是不安全的.用它明确地传递长度也是不方便的.我可以通过其他类型的聚合 - 结构 - 完全符合价值; 结构不会腐烂.

这个设计决定背后的理由是什么?它如何与语言集成?为什么结构有区别?

c arrays pointers

20
推荐指数
2
解决办法
2991
查看次数

标签 统计

arrays ×3

c ×2

arguments ×1

c++ ×1

function ×1

pointers ×1

return ×1

return-value ×1

struct ×1