(1)C语言中的&有三种使用方式。
1 取地址操作符。单目运算,与其后的变量或常量组合,用于获取该操作数的内存地址。 2 位操作中的按位与操作,双目运算符,&的两边的表达式均参与操作。 计算时,按位计算。对于任意一位,如果两个操作数该位上的值均为1,则结果该位上为1,否则结果该位上值为0. 3 当两个&符号同时使用,即&&符号,代表逻辑运算中的逻辑与。双目运算符,&&的两边的表达式均参与操作。 当&&两边均为真时,结果为真。否则结果为假。 &&由于是逻辑运算,结果只有真(1)或假(0)两种情况。
(2)&和*
变量a 本质上代表一个存储单元。CPU通过该存储单元的地址访问该存储单元中的数据。所以a本来代表两个值:存储单元的地址和储单元中的数据。于是就有了二异性。为了消除这种二义性,C语言规定a表示存储单元中的数据,&a表示存储单元的地址。 a存储单元中的数据可以是一个普通数值,也可以是另一个存储单元的地址,比如:a = &b; 语句就是将b的存储单元的地址存入a存储单元中。C语言规定a代表a中存储的地址对应的存储单元中的数据,也就是访问a就等于访问b,于是*a提供了通过a访问b中的数据的手段。
a表示a对应的存储单元中的数据。 &a表示a对应的存储单元的地址。 a表示:首先,要求a对应的存储单元中的数据 一定是另一个存储单元的地址。 于是,a表示另一个存储单元中的数据。 当a声明的类型是int时,a中存储的是一个整数数值,通过a可以访问(读取或修改)这个数值。 当a声明的类型是int 时,a中存储的是一个存储单元的地址,而该存储单元中存储的数据是一个整数数值;通过a可以访问(读取或修改)这个数值。a == &a 都是该存储单元的地址。 当a声明的类型是int时,a中存储的是一个存储单元的地址,而该存储单元中存储的数据是另外一个存储单元的地址,另外这个存储单元中存储的是一个整数数值;通过*a可以访问(读取或修改)这个数值。 …
最后,在C语言里地址叫指针。还有,在C语言中的数组本质上其实也是指针,即:*a 等同于 a[]。
(3)结构体(Struct)
结构体是一种集合,元素可以是变量、数组,类型可以不同,每个元素都称为结构体的成员(Member) struct 结构体名{}
结构体是一种数据类型,所以可以用来定义变量 struct 结构体名 变量; 变量成员与struct的成员保持一致
(4)头文件
1、stdio.h
(5)函数
(6)栈
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n31" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background: rgb(51, 51, 51); position: relative !important; padding: 10px 10px 10px 30px; width: inherit; color: rgb(184, 191, 198); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">InitStack(&S)
操作结果:构造一个空栈s。
DestroyStack(&S)
初始条件:栈s巳存在。
操作结果:栈S被销毁。
ClearStack(&S)
初始条件:栈S已存在。
操作结果:将S清为空栈。
StackEmpty(S)
初始条件:栈S巳存在。
操作结果:若栈 s 为空栈, 则返回 true, 否 则返回 false。
StackLength (S)
初始条件:栈S已存在。
操作结果:返回s的元素个数, 即栈的长 度。
GetTop(S)
初始条件:栈S已存在且非空。
操作结果:返回s的栈顶元素, 不修改栈顶 指 针。
Push(&S,e)
初始条件:栈S已存在。
操作结果:插入元素e为新的栈顶元素。
Pop(&S,&e)
初始条件:栈s已存在且非空。
操作结果:删除S的栈顶元素,并用e返回其 值。
StackTraverse(S)
初始条件:栈S已存在且非空。
操作结果:从栈底到栈顶依次对S的每个数 据元素 进行访问。</pre>
网友评论