struct Books {
char title[50];
};
int main( ) {
struct Books Book1;
struct Books Book2;
strcpy( Book1.title, "C Programming");
strcpy( Book2.title, "Telecom Billing");
printf( "Book 2 title : %s\n", Book2.title);
printf( "Book 1 title : %s\n", Book1.title);
}
在这里,一切都得到了正确执行,但我想问一下'struct'如何在不使用任何内存分配函数或任何指针的情况下为'book2'分配内存?
答案 0 :(得分:3)
Book1
和Book2
都是自动变量。它们在声明后自动分配,并在超出范围后自动解除分配。一旦函数返回,你必须非常小心不要返回任何指针。
在大多数现代架构中,它们将驻留在堆栈上(除非编译器将它们放在寄存器中)。分配本身非常便宜,因为它只涉及递增堆栈指针。
答案 1 :(得分:0)
您的Books
结构分配,每次实例化一本书时(即当您在Book1
函数中声明Book2
和main
时)一个50个字符的数组(50可用于存储标题的字节。
要了解事物的运作方式,请尝试使用以下图书定义的相同程序
struct Books {
char * title
}