请问单链表中q = p->next; 为什么不能写成 q = p+1;呢,我知道数组中指针+1就地址是往后sizeof(结构体类型),但是无法运行。诚心发问,感激不尽。
q = p->next和q = p+1又不是一回事
因为链表的各个节点的内存空间不是连续的,而p+1这种用法,只适用与内存空间连续的情况
因为链表不是顺序表,p->next的地址和p+1不是一回事呀
你在初始化数组的时候,数组长度是确定的,程序会直接给你分配足够的地址
而链表长度是可以动态改变的,你每次要分配一个新的地址,然后把它链接到表的后面
那么地址有可能是连续的,也有可能是不连续的
比如你定义了head之后又定义了一堆变量abcd,那么head后面的地址就被abcd占了,你再定义个next,此时100%是不连续的
你这样问,你可能还不理解链表和数组
数组。。。。是系统给你分配的连续空间,所以,你p+1 指的是下一个空间,这个连续空间上操作没问题
链表。。。。是不连续的空间串起来的表,注意,你链表第一个元素分配到内存后,第二个可能有了几个小时再去申请,然后串起来
所以,你已经懂了
这两个不是同一个东西,你有没有想过,为什么可以用->next 取到下一个地址?
是因为你定义过结构(链表吧),链表结构内部有一个成员变量是next,指向的是下一个地址,(看结构怎么使用了)。
而指针的+1,是根据地址进行地址位的移动,指针和地址的概念了解一下。