指向仅存在于函数C

时间:2019-03-15 12:56:50

标签: c arrays pointers

我目前正在尝试通过阅读“ The C Programming Language”学习C。我试图弄清楚诸如指针之类的东西,但是遇到了一个我无法理解的例子。
Example
指针数组作为参数传递给给定的函数,它指向在函数内创建的变量,据我所知。

lineptr[nlines++] = p;

这是否仅因为之前使用过alloc函数而可行? 这是如何工作的,这是一种安全的编码方式还是应该避免?

1 个答案:

答案 0 :(得分:2)

正如您所说,进入lineptr是一个指针数组。希望它们都为NULL,因为否则我们将发生内存泄漏,但仍然有数组。

p0 | p1 | p2 | p3 |...

alloc分配一些大小为len的内存块(这里的术语非常宽松)“驻留”在函数外部。它返回一个指向该内存的指针。然后,我们可以自由地将此指针放在数组中。

当函数返回时,调用者将能够通过存储在数组中的指针访问由alloc分配的“驻留”在函数外部的内存。

如果您可以更详细地解释为什么担心此代码,那么也许可以为您找到一个更好的答案。