在C中动态创建对象

时间:2012-01-29 20:58:16

标签: c object struct global declaration

大家好!

我熟悉JavaScript和PHP,但对C新手很熟悉 我试图在C和craete colision算法中使用图形。现在,我需要动态创建对象,就像在更高级的语言中一样。例如,我需要通过自己的函数创建一个多边形,并使其成为整个脚本可见的对象。我假设,需要一个结构。

据我所知,函数中声明的所有内容都保留在函数中。如何动态声明全局结构?

4 个答案:

答案 0 :(得分:2)

一个。函数可以返回值。

湾你可以使用全局变量。

c(可能是最有用的)。动态分配内存(使用malloc等)并返回指向它的指针。 (并且记得在使用后释放它)

答案 1 :(得分:2)

您需要具有结构或更复杂的抽象数据类型(ADT)来保存动态创建的变量。完成后,您可以通过malloc()创建所需的任何对象,并将其存储在那里。

正如我之前提到的,强烈建议您查看ADT并了解如何使用它们。这将允许您创建任何复杂的数据结构,如队列或链接列表,以便更多地面向OOP。

答案 2 :(得分:2)

声明与结构相同类型的全局指针(指针数组)。使用malloc等函数动态分配内存并将其分配给指针。

答案 3 :(得分:2)

C是一种相当静态的语言。通过静态我的意思是,您可以在运行时创建内存,但是您需要指针来解决在编译时声明的内存。也就是说,如果您在运行期间需要内存并且不想在编译期间声明它,则需要使用malloc和free(当您完成内存时)。

要创建一个在运行时创建内存的全局结构,在编译时最少需要一个指向结构的指针。如果你需要这些结构中的几个,你可以创建几个结构的内存,但是如果没有这些结构的数组,遍历结构将是乏味的。在编译时你需要指向结构的指针数组。有一些方法可以使它更具动态性,但在十年左右的时间里我使用了C和C ++,我们从未遇到过其他方式,包括设备驱动程序。

当你说在C中创建对象时,你真的没有可以创建的对象,除了通过函数调用库创建的对象或从堆创建内存,然后通过重叠结构或数组指针来解释该内存

如果参数通过引用(指向参数的指针)传入,函数可以更改参数,函数可以不返回任何内容或返回单个数据原子,char,integer,smallint或指针。