函数返回数组实践

时间:2013-06-10 20:35:44

标签: c

我刚刚开始了我的回归项目;学习C.我会说实话,当你需要推出一个桌面/服务器应用程序时抽象很好,但是对于C来说,事情变得个性化了。这很好,换一个!

现在到了这一点;我正在阅读使用带有函数的数组(在C中编程,Stephen G. Kochan。)我已经了解到,当将函数作为参数传递时,编译器将始终将引用视为指针,如下所示:

void foo (char *array);

拿这个,例如:

void foo (char *a) 
{
    a[0] = 'R'; // side effect
}

int main (void) 
{
    char a[] = "The quick brown fox jumps over the lazy dog!";
    foo (a);
}

我没有得到关于返回数组的函数或指向数组的指针的信息。该函数更改了参数中的数组,从而导致副作用(如上所示)。

函数是否可以返回指向数组的指针?或者上述方法是否优先?

提前感谢能够提供解释的人。

2 个答案:

答案 0 :(得分:1)

一个函数可以返回一个指向数组第一个元素的指针,但是它更有问题,你需要malloc数组的内存(如strdup)或者有一个静态数组(比如ctime)。

malloc给出了必须记住释放内存(内存泄漏)的问题,静态意味着数组随着每次调用而改变,因此传递现有数组更容易。

答案 1 :(得分:0)

我不确定我会效仿。您的函数类型为void。您是否尝试通过将其作为参考传递来修改数组?

在C中,如果返回指向数组第一个元素的指针,则有效返回整个数组,因为C数组在程序存储器中是连续的(可能不在物理存储器中)。因此,当您将指针返回到第一个元素时,您可以有效地告诉主函数存储整个数组的位置。