f 为带回整型函数值的函数
p 为带回一个指针的函数,该指针指向整型数据
p 为指向函数的指针,该函数返回一个整型值
P 是一个指针变量,它指向一个指向整型数据的指针变量
10。8。2 指针运算的小结
现把全部指针运算列出如下:
1) 指针变量加(减)一个整数:
谭浩强 C 语言程序设计 2001 年 5 月 1 日
例如:p++、p……、p+i、p…i、p+=i、p…=i
一个指针变量加(减)一个整数并不是简单地将原值加(减)一个整数,而是将该指针
变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数加(减)。
2) 指针变量赋值:将一个变量的地址赋给一个指针变量。
p=&a; (将变量 a 的地址赋给 p)
p=array; (将数组 array 的首地址赋给 p)
p=&array'i'; (将数组 array 第 i 个元素的地址赋给 p)
p=max; (max 为已定义的函数,将 max 的入口地址赋给 p)
p1=p2; (p1 和 p2 都是指针变量,将 p2 的值赋给 p1)
注意:不能如下:
p=1000;
3) 指针变量可以有空值,即该指针变量不指向任何变量:
p=NULL;
4) 两个指针变量可以相减:如果两个指针变量指向同一个数组的元素,则两个指针变量值
之差是两个指针之间的元素个数。
5) 两个指针变量比较:如果两个指针变量指向同一个数组的元素,则两个指针变量可以进
行比较。指向前面的元素的指针变量“小于” 指向后面的元素的指针变量。
10。8。3 void 指针类型
ANSI 新标准增加了一种“void”指针类型,即可以定义一个指针变量,但不指定它是指向
哪一种类型数据。
11 结构体与共用体
11。1 定义一个结构的一般形式
在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为
字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。 显
然不能用一个数组来存放这一组数据。因为数组中各元素的类型和长度都必须一致,以便于
编 译 系 统 处 理 。 为 了 解 决 这 个 问 题 , C 语 言 中 给 出 了 另 一 种 构 造 数 据 类 型 ——“ 结 构
(structure)”或叫“结构体”。 它相当于其它高级语言中的记录。“结构”是一种构造类型,
它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结
构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。
如同在说明和调用函数之前要先定义函数一样。
定义一个结构的一般形式为:
struct 结构名
{成员表列};
成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须
作类型说明,其形式为:
类型说明符 成员名;
成员名的命名应符合标识符的书写规定。例如:
struct stu
{
int num;
char name'20';
char sex;
float score;
};
在这个结构定义中,结构名为 stu,该结构由 4 个成员组成。第一个成员为 num,整型变
量;第二个成员为 name,字符数组;第三个成员为 sex,字符变量;第四个成员为 score,
实型变量。应注意在括号后的分号是不可少的。结构定义之后,即可进行变量说明。凡说明
为结构 stu 的变量都由上述 4 个成员组成。由此可见, 结构是一种复杂的数据类型,是数目
固定,类型不同的若干有序变量的集合。
11。2 结构类型变量的说明
说明结构变量有以下三种方法。以上面定义的 stu 为例来加以说明。
1。 先定义结构,再说明结构变量。
如:
struct stu
{
int num;
char name'20';
char sex;
float score;
};
struct stu boy1;boy2;
说明了两个变量 boy1 和 boy2 为 stu 结构类型。也可以用宏定义使一个符号常量来表示
一个结构类型。
例如:
#define STU struct stu
STU
{
int num;
char name'20';
char sex;
float score;
};
STU boy1;boy2;
2。 在定义结构类型的同时说明结构变量。
例如:
struct stu
{
int num;
char name'20';
char sex;
float score;
}boy1;boy2;
这种形式的说明的一般形式为:
struct 结构名
{
成员表列
}变量名表列;
3。 直接说明结构变量。
例如:
struct
{
int num;
char name'20';
char sex;
float score;
}boy1;boy2;
这种形式的说明的一般形式为:
struct
{
成员表列
}变量名表列;
第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。
三种方法中说明的 boy1;boy2 变量都具有下图所示的结构。
说明了 boy1;boy2 变量为 stu 类型后,即可向这两个变量中的各个成员赋值。在上述 stu
结构定义中,所有的成员都是基本数据类型或数组类型。
成员也可以又是一个结构,即构成了嵌套的结构。例如,下图给出了另一个数据结构。
按图可给出以下结构定义:
struct date
{
int month;
int day;
int year;
};
struct{
int num;
char name'20';
char sex;
struct date birthday;
float score;
}boy1;boy2;
首先定义一个结构 date,由 month(月)、day(日)、year(年) 三个成员组成。 在定义并
说明变量 boy1 和 boy2 时,其中的成员 birthday 被说明为 data 结构类型。成员名可与程
序中其它变量同名,互不干扰。
11。3 结构变量成员的表示方法
在程序中使用结构变量时,往往不把它作为一个整体来使用。在 ANSI C 中除了允许具有
相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算
等都是通过结构变量的成员来实现的。
表示结构变量成员的一般形式是:
结构变量名。成员名
例如:
boy1。num 即第一个人的学号
boy2。sex 即第二个人的性别
如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。
例如:
boy1。birthday。month
即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。
11。4 结构变量的赋值
结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。
【例 11。1】给结构变量赋值并输出其值。
main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1;boy2;
boy1。num=102;
boy1。name=〃Zhang ping〃;
printf(〃input sex and scoren〃);
scanf(〃%c %f〃;&boy1。sex;&boy1。score);
boy2=boy1;
printf(〃Number=%dnName=%sn〃;boy2。num;boy2。name);
printf(〃Sex=%cnScore=%fn〃;boy2。sex;boy2。score);
}
本程序中用赋值语句给 num 和 name 两个成员赋值,name 是一个字符串指针变量。用 scanf
函数动态地输入 sex 和 score 成员值,然后把 boy1 的所有成员的值整体赋予 boy2。最后分
别输出 boy2 的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。
11。5 结构变量的初始化
和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。
【例 11。2】对结构变量初始化。
main()
{
struct stu /*定义结构*/
{
int num;
char *name;
char sex;
float score;
}boy2;boy1={102;〃Zhang ping〃;"M";78。5};
boy2=boy1;
printf(〃Number=%dnName=%sn〃;boy2。num;boy2。name);
printf(〃Sex=%cnScore=%fn〃;boy2。sex;boy2。score);
}
本例中,boy2;boy1 均被定义为外部结构变量,并对 boy1 作了初始化赋值。在 main 函
数中,把 boy1 的值整体赋?
小说推荐
- VC语言6.0程序设计从入门到精通
- -Page 1-Visual C 6.0 程序设计从入门到精通求是科技 王正军 编著
- 最新章:第136章
- C语言修仙
- 文案 林浔是一个程序员,通宵编代码后发现自己身体内多了一个程序输入窗口 他尝试编了一个循环程序 第二天,邻居家老头找上门来:小浔,你小小年纪,竟已跨入炼气期,做我门下弟子如何 第三天,在街上被人拍肩膀:少年,你骨骼惊奇,加入我宗门如何 林浔 后来,他发现现代社会真的有修仙者。而别人修仙靠灵力,自己修
- 最新章:第177章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- 三少诱妻C计画
- 作品:三少诱妻C计画 作者:冬情 男主角:雷振南 女主角:花雨侬 内容简介 她从小就喜欢一个大哥哥 也和大哥哥约定好要结婚 她一直在等他回来找她 然后当他的新娘 啊!怎么办、怎么办 老爹竟然帮她们找了结婚对象 要把她们统统嫁掉 不行啦!她要当大哥哥的新娘 怎么可以嫁给别人呢 她一定要跟姐姐们一起跟老
- 最新章:第23章
- 设计
- 作品:设计 作者:槐绿 男主角:殷采衣 女主角:相从 内容简介 幼时的一点夙缘 她铭记苦寻七年 终于重逢,终得亲近 一路言笑晏晏的和睦背后 是冰冷的一次次试探 由始至终,连一点点的信任都得不到 不难过,终是不可能的事 原已决定,真相大白之日 也是她离去之时 只是 这个后脚就跟来的人是怎么回事 正文
- 最新章:第26章
- 设计师
- 《设计师》作者:常叁思文案工科男有工科男的温柔,在钱心一三十五岁那年,陈西安参照行业最严标准瞒着他造了栋房子。抗震9度,耐火一级,防雷一级,传热系数2.0,地震不倒,雷劈不到,冬暖夏凉,节能环保。精装验收后,他把设计说明连同钥匙一起递到钱心一面前,说“我给你一个家吧”结果职业病发作的钱心一震惊的说“
- 最新章:第145章
- 设计你
- 作品:设计你 作者:艾佟 男主角:官聿颢 女主角:伊若橘 内容简介 唉唉唉,善良小女子遇上骄蛮千金女 下场只有三个字:灰熊惨 人家忧心自家大哥深陷初恋阴霾搞不婚 她不过好心提出传说之泉具有爱情魔力 取泉水、诱男主角喝下的任务便要她扛 官大哥的幸福问题她也很关心没错啦 毕竟他俩有过不寻常的“亲密接触
- 最新章:第25章
- 设计成婚
- 书名:设计成婚作者:叶兮凉【文案】郁瑾在无数次相亲失败之后,颓败地对许韦慕试探“你看我们俩都这么熟了,要不下半辈子你就跟我凑合着过吧”许韦慕挑眉“结婚可以,不过要签婚前协议”郁瑾抱起枕头,砸他“我怎么不知道你这么小气”许韦慕勾起嘴角,缓缓开口“协议内容只有一条,不许离婚”PS:后来郁瑾才知道,她会没
- 最新章:第58章