打印
[PIC®/AVR®/dsPIC®产品]

如何定义一个指向自己的指针?

[复制链接]
699|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuanhuanzi|  楼主 | 2024-3-30 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如说链表啊,指向的每一个类型都是自己这种类型,又包含指针,那么是怎么实现的呢?

使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2024-3-30 13:26 | 只看该作者
经过研究原来是可以定义一个结构体的,结构体里面本身还可以包含自身类型的指针,真是好神奇。
#include <stdio.h>
#include <stdlib.h>

// 定义链表节点
struct Node {
    int data;
    struct Node *next;
};

// 插入节点到链表头部
void insertAtBeginning(struct Node **head, int data) {
    // 创建新节点
    struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    // 将新节点插入到链表头部
    newNode->next = *head;
    *head = newNode;
}

// 打印链表
void printList(struct Node *head) {
    struct Node *temp = head;
    while (temp != NULL) {
        printf("%d -> ", temp->data);
        temp = temp->next;
    }
    printf("NULL\n");
}

int main() {
    // 初始化链表头指针
    struct Node *head = NULL;

    // 插入一些元素到链表中
    insertAtBeginning(&head, 5);
    insertAtBeginning(&head, 10);
    insertAtBeginning(&head, 15);

    // 打印链表
    printf("链表内容:\n");
    printList(head);

    return 0;
}

使用特权

评论回复
板凳
xuanhuanzi|  楼主 | 2024-3-30 13:28 | 只看该作者
链表内容:
15 -> 10 -> 5 -> NULL

使用特权

评论回复
地板
g0d5xs| | 2024-4-2 16:53 | 只看该作者
在C或C++中,可以定义一个指向自己的指针,也称为自引用指针

使用特权

评论回复
5
b5z1giu| | 2024-4-2 18:00 | 只看该作者
指针还是比较好用的

使用特权

评论回复
6
ex7s4| | 2024-4-2 19:06 | 只看该作者
尽量别让指针指空,或者变成野指针就好

使用特权

评论回复
7
y1n9an| | 2024-4-2 20:10 | 只看该作者
指针我用的还是少,一般数组用的比较多

使用特权

评论回复
8
p0gon9y| | 2024-4-2 21:13 | 只看该作者
感觉指针用不好的话,会很容易出问题的

使用特权

评论回复
9
q1d0mnx| | 2024-4-2 22:16 | 只看该作者
一般指向自己的指针意义是什么呢?

使用特权

评论回复
10
kaif2n9j| | 2024-4-3 07:03 | 只看该作者
链表确实很好,可以降低使用的内存吧

使用特权

评论回复
评论
forgot 2024-4-17 09:50 回复TA
按需使用内存 
11
w2nme1ai7| | 2024-4-3 09:00 | 只看该作者
正常来说,定义了一个结构体或类,其中包含一个指向自己类型的指针成员。这样就可以创建一个自引用的数据结构,比如链表或树等

使用特权

评论回复
12
liu96jp| | 2024-4-3 10:10 | 只看该作者
自引用指针非常适合用于定义递归数据结构,如链表、树等。通过指向自己的指针,可以轻松地构建具有递归性质的数据结构,使得数据结构的定义和操作更加灵活和简洁

使用特权

评论回复
13
cen9ce| | 2024-4-3 11:07 | 只看该作者
在动态数据结构中,自引用指针可以方便地实现动态内存分配和释放,以及动态数据结构的扩展和收缩。这对于需要频繁插入、删除或调整大小的数据结构非常有用

使用特权

评论回复
14
稳稳の幸福| | 2024-4-15 22:44 | 只看该作者
指针用自己函数的名字即可。

使用特权

评论回复
15
huquanz711| | 2024-4-16 07:47 | 只看该作者
把自己的地址赋值给一个指针变量。

使用特权

评论回复
16
稳稳の幸福| | 2024-4-23 23:22 | 只看该作者
这样可以组成链表了。

使用特权

评论回复
17
幸福小强| | 2024-4-26 22:17 | 只看该作者
这不是链表的用法吗,单向链表。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

155

主题

2084

帖子

2

粉丝