c的多级指针

指针的本质就是一个普通变量,它的值表示的是一个内存地址,这个地址中可能存放了其它变量。那么二级指针其实也是一个普通的变量,这个变量中同样也存放了一个内存地址,而这个内存地址是一个指针变量的地址
比如:

int a = 0;
int b = 1;
int *p = &a;
int **p2 = &p;

image
*(pointer)就是修改其指向地址的变量内容。

下面看多级指针的应用

例如:我们已经实现了一个有序链表(升序,由小到大):

//节点
typedef struct s_node
{
	//关键字
	int key;
	//下一个节点指针
	struct s_node *next;
} s_node;

//链表
typedef struct s_list
{
	//头节点
	struct s_node *header;
} s_list;
//使用二级指针来插入
int list_insert(s_list *list, int key)
{
	if (list == NULL)
	{
		return -1;
	}

	//创建新节点
	s_node *n = malloc(sizeof(s_node));
	n->key = key;
	n->next = NULL;

	//二级指针
	s_node **p = &list->header;
	//找到第一个大于key的节点
	while ((*p) != NULL && (*p)->key < key)
	{
		p = &(*p)->next;
	}
	//插入新节点
	n->next = *p;
	*p = n;

	return 0;
}

我们在使用C语言编程的过程中,如果遇到需要修改指针的值,使它指向另外一个节点,或变量,与其使用大量代码直接修改它的值,不如使用它的二级指针,直接修改其地址值,会大大减少代码冗余,提高代码质量。

posted on   张博的博客  阅读(18)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-02-04 莫烦python课程里面的bug修复;课程爬虫小练习爬百度百科

导航

统计

点击右上角即可分享
微信分享提示