【转】c语言中-> 的含义

本文深入解析C语言中的链表结构与指针应用,通过实例讲解如何使用'->'操作符访问结构体成员及链表节点,阐述变量、指针与结构体的概念,帮助读者理解链表指针的难点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源 :网络(非原创)

->是一个整体,它是用于指向结构体、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语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套用我们院长的问话:“教室变不变?”变,因为每天有不同的人在里面上课,但又不变,因为教室始终在那,没有变大或变小。这就是变量:有一个不变的地址和一块可变的存储空间。正常情况下,我们只看到变量这个房间里面的东西,也就是其内容,但不会关注变量的地址,但是C语言的指针,就是这个房间的地址。我们声明变量就相当于盖了间房子存放东西,我们可以直接观看房子里的东西,而声明指针,就是相当于获得了一个定位器,当用指针指向某个变量时,就是用指针给变量定位,以后我们就可以用指针找到他所“跟踪”的变量并可以获得里面的内容。
那结构体呢?结构体就相当于是有好几个房子组成的别墅,几个房子绑定在一起使用。假设现在有很多这种别墅分布在一个大迷宫里,每间别墅里都有一间房子。里面放了另一个别墅的位置信息,现在你手拿定位器找到了第一栋别墅,从里面得到了你想要的东西(链表的数据部分),然后把下一栋别墅的位置计入你的定位器(p = p->next),再走向下一栋别墅……如此走下去,直到走到某地下一栋别墅信息没有了(p->next == NULL),你的旅行结束。这就是链表一次遍历的过程。现在你能明白 p=p->next的含义了吧。

### C语言基础语法概述 C语言是一种通用的编程语言,广泛应用于系统软件开发以及嵌入式领域。以下是关于C语言的基础知识点: #### 一、常量与变量 在C语言中,常量是指在程序运行过程中其值不会改变的数据项[^1]。而变量则是可以存储数据的一个内存位置名称。定义变量时需指定类型。 #### 二、数据类型 C语言支持多种内置数据类型,包括但不限于整型(int)、浮点型(float/double)、字符型(char),每种类型的取值范围和占用空间大小各不相同。 #### 三、关键字 关键字是由编译器预定义好的具有特殊含义的单词,在编写代码时不可作为标识符使用。例如`if`, `else`, `while`等均属于此类。 #### 四、标识符 用于命名变量名、函数名或者标签名的一串字符序列称为标识符;它由字母(A-Z, a-z), 数字(0-9) 和下划线(_)组成,并且首字符不能为数字。 #### 五、注释 单行注释以双斜杠(`//`)开头直到该行结束都被视为注释内容;多行注释则通过/*...*/包围起来的部分表示。 #### 六、进制数 除了十进制外,还可以采用八进制(前缀加'0')、十六进制(前缀加 '0x' 或者 '0X')来表达数值。 #### 七、运算符 涵盖了算术(+,-,*,/,%)、关系(<,>,<=,>=,==,!=)、逻辑(&&, || , ! )等多种类别操作符号。 #### 八、义字符 一些特殊的非打印ASCII码可以通过反斜杠(\)后面加上特定字母形式表现出来,比如'\n'(换行),'\\'(反斜杠本身)。 #### 九、C语言类型换 当不同数据类型之间相互赋值或参与同一表达式的计算时可能会发生自动类型提升现象,也可以显式地利用强制类型换完成所需变化。 ```c #include <stdio.h> int main() { int i = (int)(3.14); // 显式类型换 printf("%d\n",i); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值