c如何在自定义的类中引用其他类
时间: 2024-01-02 12:06:54 浏览: 12
在 C 语言中,没有类的概念,但可以通过结构体来实现类似的功能。如果要在自定义的结构体中引用其他结构体,可以使用指向其他结构体的指针。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int x;
int y;
} Point;
typedef struct {
Point* start;
Point* end;
} Line;
int main() {
Point* p1 = (Point*)malloc(sizeof(Point));
p1->x = 0;
p1->y = 0;
Point* p2 = (Point*)malloc(sizeof(Point));
p2->x = 10;
p2->y = 10;
Line* line = (Line*)malloc(sizeof(Line));
line->start = p1;
line->end = p2;
printf("Line start: (%d, %d)\n", line->start->x, line->start->y); // 输出 "Line start: (0, 0)"
printf("Line end: (%d, %d)\n", line->end->x, line->end->y); // 输出 "Line end: (10, 10)"
free(p1);
free(p2);
free(line);
return 0;
}
```
在上面的代码中,我们定义了两个结构体 `Point` 和 `Line`,其中 `Line` 使用了指向 `Point` 结构体的指针作为其成员变量。在 `main()` 函数中,我们创建了两个 `Point` 类型的对象 `p1` 和 `p2`,并设置它们的坐标值。然后创建了一个 `Line` 类型的对象 `line`,并将 `p1` 和 `p2` 分别赋值给 `line` 的 `start` 和 `end` 成员变量。最后输出 `line` 的起点和终点坐标。这样就实现了在一个结构体中引用另一个结构体的功能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)