【转】c语⾔中-的含义
来源 :⽹络(⾮原创)
->是⼀个整体,它是⽤于指向结构体、C++中的class等含有⼦数据的指针⽤来取⼦数据。换种说法,如果我们在C语⾔中定义了⼀个结构体,然后申明⼀个指针指向这个结构体,那么我们要⽤指针取出结构体中的数据,就要⽤到“->”.
举个例⼦:
struct Data
{
int a,b,c;
}; /定义结构体/
struct Data * p;/定义结构体指针/
struct Data A = {1,2,3};/声明变量A/
int x;/声明⼀个变量x/
p = &A ; /* 让p指向A*/
x = p->a;/* 这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/* 由于此时p指向A,因⽽ p->a == A.a,也就是1*/
对于⼀开始的问题 p = p->next;这应该出现在C语⾔的链表,这⾥的next应该是⼀个与p同类型的结构体指针,其定义格式应该是:
struct Data
{
int a;
struct Data * next;
};/* 定义结构体 */
c语言中struct…………
main()
{
struct Data * p;/声明指针变量p/
……
p = p->next;/将next中的值赋给p/
}
链表指针是C语⾔的⼀个难点,但也是重点,学懂了⾮常有⽤。要仔细讲就必须先讲变量、指针。
什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套⽤我们院长的问话:“教室变不变?”变,因为每天有不同的⼈在⾥⾯上课,但⼜不变,因为教室始终在那,没有变⼤或变⼩。这就是变量:有⼀个不变的地址和⼀块可变的存储空间。正常情况下,我们只看到变量这个房间⾥⾯的东西,也就是其内容,但不会关注变量的地址,但是C语⾔的指针,就是这个房间的地址。我们声明变量就相当于盖了间房⼦存放东西,我们可以直接观看房⼦⾥的东西,⽽声明指针,就是相当于获得了⼀个定位器,当⽤指针指向某个变量时,就是⽤指针给变量定位,以后我们就可以⽤指针到他所“跟踪”的变量并可以获得⾥⾯的内容。
那结构体呢?结构体就相当于是有好⼏个房⼦组成的别墅,⼏个房⼦绑定在⼀起使⽤。假设现在有很多这种别墅分布在⼀个⼤迷宫⾥,每间别墅⾥都有⼀间房⼦。⾥⾯放了另⼀个别墅的位置信息,现在你⼿拿定位器到了第⼀栋别墅,从⾥⾯得到了你想要的东西(链表的数据部分),然后把下⼀栋别墅的位置计⼊你的定位器(p = p->next),再⾛向下⼀栋别墅……如此⾛下去,直到⾛到某地下⼀栋别墅信息没有了(p->next == NULL),你的旅⾏结束。这就是链表⼀次遍历的过程。现在你能明⽩ p=p->next的含义了吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论