【总结】知识点巩固-------指针和地址的构造和析构

本文深入探讨了指针与地址的关系,以及在C/C++中如何正确使用指针进行内存管理,包括初始化、分配、释放内存等关键操作,并通过具体示例展示了删除链表节点的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针和地址是强相关的,但是两个概念,指针可以为nullptr或指向特定的地址

构造:

只初始化(没有new或malloc,没有指向初始地址)时,为nullptr.

new或malloc后,就已经分配了内存,地址赋给了指针

析构:

1.指针指向的地址可以被改变,但对于以前指向的地址如果是new或malloc出来的,需要delete或者free

例:删除结点时,需要先将需要删除的结点暂存,然后将下一个结点赋给当前结点,之后再删除结点

https://blog.youkuaiyun.com/weixin_39916039/article/details/82146763

void RemoveNode(ListNode* Head, int value)
{
	if (Head == nullptr)
		return;
	ListNode *DeleteNode = nullptr;
	if (Head->value == value)
	{
		DeleteNode = Head;
		Head = Head->next;
	}
	else
	{
		ListNode *pNode = Head;
		while (pNode->next != nullptr&&pNode->next->value != value)
		{
			pNode = pNode->next;
		}
		if (pNode->next != nullptr&&pNode->next->value == value)
		{
			DeleteNode = pNode->next;
			pNode->next = pNode->next->next;
		}
	}
	if (DeleteNode != nullptr)
	{
		delete DeleteNode;
		DeleteNode = nullptr;
	}
}

//删除结点
int deleteLinkList(LinkNode* pHeader,int val)
{
	if (pHeader == NULL)
	{
		return 0;
	}
	LinkNode* pre = pHeader;
	LinkNode* cur = pHeader->next;
	while (cur != NULL)
	{
		if (cur->data == val)
		{
			break;
		}
		pre = pre->next;
		cur = cur->next;
	}
	if (cur != NULL)
	{
		pre->next = cur->next;
		free(cur);
		cur = NULL;
	}
	return 1;
}

2.析构时,地址delete(free),指针指向nullptr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值