在C语言中动态创建对象

在C语言中动态创建对象,c,object,struct,global,declaration,C,Object,Struct,Global,Declaration,大家好 我熟悉JavaScript和PHP,但对C不熟悉。 我试图在C和craete colision算法中使用图形。现在,我需要动态创建对象,就像在更高级的语言中一样。例如,我需要通过自己的函数创建一个多边形,并使其成为整个脚本可见的对象。我想,需要一个结构 据我所知,函数中声明的所有内容都保留在函数中。如何动态声明全局结构?a。函数可以返回值 b。您可以使用全局变量 c(可能是最有用的)。动态分配内存(使用malloc等)并返回指向它的指针。(请记住使用后将其释放)a。函数可以返回值 b。您

大家好

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


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

a。函数可以返回值

b。您可以使用全局变量


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

a。函数可以返回值

b。您可以使用全局变量


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

您需要一个结构或更复杂的抽象数据类型(ADT)来保存动态创建的变量。一旦有了它,就可以通过malloc()创建所需的任何对象,并将其存储在其中


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

您需要一个结构或更复杂的抽象数据类型(ADT)来保存动态创建的变量。一旦有了它,就可以通过malloc()创建所需的任何对象,并将其存储在其中


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

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

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

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

要创建一个全局结构,您将在运行时创建它的内存,在编译时只需要一个指向结构的指针。如果需要其中的几个结构,可以创建几个结构的内存,但是如果没有这些结构的数组,遍历这些结构将非常繁琐。在编译时,您将需要指向结构的指针数组。有一些方法使这个更动态,但是在大约十年左右的时间里,我使用C和C++,我们从来没有遇到过其他的方法,包括设备驱动程序。 当您说在C中创建对象时,除了通过函数调用库或从堆中创建内存,然后通过重叠结构或数组指针来解释内存所创建的对象之外,您实际上没有可以创建的对象


如果这些参数是通过引用(指向参数的指针)传入的,则函数可以更改参数,函数可以不返回任何内容或返回单个数据原子、字符、整数、smallint或指针。

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

要创建一个全局结构,您将在运行时创建它的内存,在编译时只需要一个指向结构的指针。如果需要其中的几个结构,可以创建几个结构的内存,但是如果没有这些结构的数组,遍历这些结构将非常繁琐。在编译时,您将需要指向结构的指针数组。有一些方法使这个更动态,但是在大约十年左右的时间里,我使用C和C++,我们从来没有遇到过其他的方法,包括设备驱动程序。 当您说在C中创建对象时,除了通过函数调用库或从堆中创建内存,然后通过重叠结构或数组指针来解释内存所创建的对象之外,您实际上没有可以创建的对象


如果这些参数是通过引用(指向参数的指针)传入的,则函数可以更改参数,并且函数可以不返回任何内容或返回单个数据原子、字符、整数、smallint或指针。

我猜您真正的意思是,只有在您知道自己在做什么的情况下,才可以“永远不要使用全局变量”。我敢说OP没有让他知道。。。我们都写了一些糟糕的程序,得到了堆栈溢出,用谷歌搜索了这个短语,然后开始学习……我想你真正的意思是“你永远不会使用全局变量”,除非你知道你在做什么。我敢说OP没有让他知道。。。我们都写了一些糟糕的程序,堆栈溢出,用谷歌搜索那个短语,然后开始学习。。。