
->是一个整体,它是用于指向结构体、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依靠易变工具来生成链表。
参考资料:链表–百度百科
1e-12表示的是1e的十二次方根。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。c语言1e-12代表1e-12表示的是1e的十二次方根,C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。 c语言是一种面向过程、抽象化的通用程序设计语言,它可以用来编写应用软件、编写系统软件和图形处理、开发嵌入式设备和开发游戏软件。下面是详细介绍:1、编写应用软件,Linux *** 作系统中的应用软件都是使用C语言编写的,这样的应用软件安全性非常高。
2、编写系统软件和图形处理,C语言具有很强的绘图能力和可移植性,并且具备很强的数据处理能力,可以用来编写系统软件、制作动画、绘制二维图形和三维图形等。
3、开发嵌入式设备,手机等消费类电子产品内部的应用软件、游戏等很多都是采用C语言进行嵌入式开发的。
4、开发游戏软件,利用C语言可以开发很多游戏,比如推箱子、贪吃蛇等。
总结
c语言是一种面向过程、抽象化的通用程序设计语言,它可以用来编写应用软件、编写系统软件和图形处理、开发嵌入式设备和开发游戏软件。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)