创建一个气球类,属性为:气球大小、颜色、形状。在main 函数中分别采用栈存储和堆存储来实例化一个对象,并且给它属性赋值。调用getSize、getColor、getShape函数分别输出大小、颜色和形状。C语言程序设计代码
时间: 2024-10-10 16:16:47 浏览: 59
在C语言中,由于栈和堆的概念并不适用于类和对象的管理,因为C++的类和对象机制是在C语言的基础上进行了封装。然而,我们可以使用结构体配合动态内存分配(malloc和free)来模拟这个场景。这里是一个基本的示例,展示了如何创建一个气球类(实际上是结构体)并分别在栈和堆上实例化对象:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc和free
// 气球结构体
typedef struct Balloon {
float size; // 气球大小
char color[50]; // 颜色
char shape[50]; // 形状
} Balloon;
// 动态分配栈上内存
Balloon* stack_balloon = malloc(sizeof(Balloon));
// 给栈上气球赋值
void set_stack_balloon(Balloon* balloon) {
balloon->size = 10.5f; // 示例大小
strcpy(balloon->color, "红色"); // 示例颜色
strcpy(balloon->shape, "心形"); // 示例形状
}
// 动态分配堆上内存
Balloon* heap_balloon = (Balloon*)malloc(sizeof(Balloon)); // 堆上分配
void set_heap_balloon(Balloon* balloon) {
balloon->size = 7.8f; // 示例大小
strcpy(balloon->color, "蓝色"); // 示例颜色
strcpy(balloon->shape, "圆形"); // 示例形状
}
// 函数用于获取并输出气球属性
void get_balloon_info(Balloon* balloon) {
printf("气球大小: %.1f\n", balloon->size);
printf("颜色: %s\n", balloon->color);
printf("形状: %s\n", balloon->shape);
}
int main() {
// 栈上的气球
set_stack_balloon(stack_balloon);
get_balloon_info(stack_balloon);
// 堆上的气球
set_heap_balloon(heap_balloon);
get_balloon_info(heap_balloon);
free(stack_balloon); // 释放栈上内存
free(heap_balloon); // 释放堆上内存
return 0;
}
```
在这个例子中,我们首先在栈上和堆上分别为气球分配了内存,然后设置了属性并调用了输出函数。注意,在`main`结束时需要释放之前动态分配的内存。
阅读全文