指针的指针的理解

指针的指针的理解使用指针 就是为了能够修改指针所指向的东西 为了能够修改 指针本身 就需要传递指针的指针 指针的指针是什么意思

大家好,欢迎来到IT知识分享网。

 使用指针,就是为了能够修改指针所指向的东西,为了能够修改‘指针本身’,就需要传递指针的指针。
  比如:一、为了改变char a的值,在调用函数时,你的函数就是modify(char *p);
 二、为了改变char *p,中p的值,在调用函数时,你的函数就是modify(char p);
指针的指针的理解 
 这就是为什么在数据结构中常用指针的指针来创建根结点。
 
typedef struct node{ struct node *next; int num; }node;

如有这个结构,用于创建链表,创建表头有两种方式,一种是通过,函数返回链表头的地址;另一种是通过参数传递,改变原变量的内容(原变量是个地址)。

2.参数传递改变地址;

如果为node *head=NULL,这种形式,然后把head以某种形式作为参数,使得返回返回后head指向链表头节点。
指针的指针的理解

void Create_head_v0(node p) { if(p==NULL) return; *p=(node *)malloc(sizeof(node)); (*p)->next=NULL;//注意要括号。 (*p)->num=1; } void main() { node *head=NULL; printf("head的地址为:%x\n",&head); printf("之前head存储的地址为:%x\n",head); Create_head_v0(&head); printf("之后head的地址为:%x\n",&head); printf("之后head存储的地址为:%x\n",head); printf("num=%d\n",head->num);

指针的指针的理解


3.返回地址

返回地址相当于是直接赋值。
node *head=NULL;
head=newadd.
node *Create_head_v1() { node *head= (node *)malloc(sizeof(node)); head->next=NULL;//注意要括号。 head->num=2;return head;
} 转载请标明出处:<a target=_blank href="http://blog.csdn.net/lin/article/details/">http://blog.csdn.net/lin/article/details/</a> void main() { node *head=NULL; head=Create_head_v1();//这里通过赋值的方式改变head的内容。 printf("num=%d\n",head->num);

4.按从大到小向链表中插入数据

由于可能改变表头head的内容,所以也用指针的指针。

//从大到小; int inser3(node nod,int val) { node *newnoid=(node*)malloc(sizeof(node)); if(newnoid==NULL) return -1; newnoid->num=val; newnoid->next=NULL; while ((*nod) != NULL) { if (val > (*nod)->num) break; nod = &((*nod)->next); } newnoid->next = *nod; *nod=newnoid; return 0; }
/*从头到尾释放*/ void Free_node(node *head) { node *pre=NULL,*cur=head; while(cur!=NULL) { pre=cur; cur=cur->next; printf("释放node->num=%d\n",pre->num); free(pre); } } void main() { node *head=NULL; node *root=NULL; inser3(&root,5); inser3(&root,1); inser3(&root,3); inser3(&root,2); inser3(&root,1); head=root; while(root!=NULL) { printf("%d\n",root->num); root=root->next;//此时root不指向根。 } Free_node(head); }

指针的指针的理解




免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112109.html

(0)
上一篇 2026-01-20 16:45
下一篇 2026-01-20 17:11

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信