->是一个整体,它是用于指向结构体、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;
};/*定义结构体*/
…………
main()
{
struct Data * p;/*声明指针变量p*/
……
p = p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。
链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。
链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。
程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。
参考资料:链表–百度百科
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。
扩展资料:
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
定义与声明:
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
本回答被网友采纳->在C语言中是什么意思?
->在C语言中,叫做指向结构体成员运算符,用处是使用一个指向结构体或对象的指针访问其内成员。一个指针当用来指向一个结构体、对象时,称之为结构体指针或对象指针。结构体指针或对象指针中的值是所指向的结构体或对象的首地址。通过结构体指针或对象指针即可访问该结构体或对象。指向结构体成员运算符...
C语言中->是什么意思啊?
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。
C语言中->是什么意思啊?
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.举个例子:struct Data { int a,b,c;}; \/*定义结构体*\/ struct Data *...
c语言中->是什么意思?
"->"是C语言中的一个运算符:指向结构体成员运算符。常常用于结构体中 比如:struct student{ int number;float score;char adrr;}student1,*p;int a;p=&student1;这上面是 定义了一个结构体变量student1;和一个指向结构体变量的指针p;然后看下面一句:a=p->number;意思是把p所指向的结构...
你好 请问C语言中这个符号->是什么意思
表示求结构体的成员。为二元操作符,左为结构体的指针,右为成员名。
c语言->是什么意思
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果在C语言中定义了一个结构体,申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。
C语言中->是什么意思啊?
-> 用于:成员选择(指针)例如:对象指针->成员名
C语言中->是什么意思
是一个运算符,其左侧的变量,要求必须是一个结构休或者类的指针,如果是C那就必须是结构体的指针,而右侧必须是结构体中的成员。注意左侧一定要是指针才正确。记住:->运算符除了用于结构体的指针访问其成员之外,没有其他的用处。比如 struct c{int a;};void main(){stuct c cc;struct c *p=...
-> 在c语言中是什么意思?
在C语言中,"->"这个符号具有特殊的含义。它被用来操作结构体中的成员,当我们定义了一个结构体并为其创建一个指针时,"->"就变得尤为重要。例如,当你看到代码片段"p=p->next",这其实是在说,将指针p指向的结构体实例中的成员next的值赋给p。简单来说,"->"就像一个桥梁,连接指针和它所...
C语言中"->"什么意思
unsigned char x;x=127;\/\/(二进制:0111 1111)\/\/x<<1后的结果:1111 1110 <=> 254 printf(''%o",x<<1); \/\/按8进制输出376 说明事项1:移位运算都是2的整数倍,*2 和<<1的运算结果是一样的,但是移位的运行效率要高 2:有符号数不要轻易使用移位,符号位比较容易出问题。