10.4 结构变量、结构指针作为函数参数11
- 格式:pptx
- 大小:906.67 KB
- 文档页数:8


《高级语言程序设计》知识点总结(七)
7.1结构型和结构变量
1.结构型
结构型是由若干独立意义成员组成的复杂数据。定义一个结构型的一般形式为
struct 结构型名;
其中关键字“struct”引出结构型的定义。用花括号括住结构型的成员说明表,指明组成此结构型全部成员的数据类型和名称。结构型的成员也称为域。如某个系统的学生数据实体用如下结构型来描述:
struct stdType;
上例定义结构型struct stdType,有六个成员。实际上,凡是相关的若干数据对象都可组合成一个结构,在一个结构名下进行办理。
结构成员的数据类型可以是任何类型,包罗前面定义的其它结构型,但是结构不能包含自身,而允许结构中可有这样的指针成员,指向如同定义一样的结构。
2.结构变量
结构型的变量就是结构变量,程序要使用结构数据,需定义结构变量。结构变量也简称结构。定义结构变量有以下几种不同的方法。
(l)先定义结构型,再定义结构变量。如利用前面已定义的结构型struct stdType,以下代码
structstdType st1,st2,stdArray[200]
定义结构变量st1、st2和结构数组stdArray.
(2) 在定义结构型时,同时定义结构变量。如代码
struct pointp1,p2;
定义struct point型变量 p1、p2.
(3) 在定义无名结构型时,同时定义结构变量。如某种形式的结构型只是一次性定义几个变量,可以省略结构型名,直接定义结构变量。如由日、月、年组成的日期结构变量为:
struct
int day; /*日*/
int month;/*月*/
int year;/*年*/
} date1,date2;/*定义两个日期变量datel和date2*/
3.结构变量初始化
在定义结构变量时,可同时给它置初值,称为结构变量初始化。结构变量初始化时,要按其结构型定义中的成员挨次逐一给出各成员的初值。如
第1章程序设计和C语言1
第2章算法——程序的灵魂16
第3章最简单的C程序设计——顺序程序设计
第4章选择结构程序设计85
第5章循环结构程序设计114
第6章利用数组处理批量数据142
6.1怎样定义和引用一维数组142
6.1.1怎样定义一维数组143
6.1.2怎样引用一维数组元素144
6.1.3一维数组的初始化145
6.1.4一维数组程序举例146
6.2怎样定义和引用二维数组148
6.2.1怎样定义二维数组149
6.2.2怎样引用二维数组的元素150
6.2.3二维数组的初始化151
6.2.4二维数组程序举例152
6.3字符数组154
6.3.1怎样定义字符数组154
6.3.2字符数组的初始化155
6.3.3怎样引用字符数组中的元素155
6.3.4字符串和字符串结束标志156
6.3.5字符数组的输入输出159
6.3.6使用字符串处理函数161
6.3.7字符数组应用举例165
习题168
第7章用函数实现模块化程序设计170
7.1为什么要用函数170
7.2怎样定义函数172
7.2.1为什么要定义函数172
7.2.2定义函数的方法173
7.3调用函数174
7.3.1函数调用的形式174
7.3.2函数调用时的数据传递175
7.3.3函数调用的过程177
7.3.4函数的返回值178
7.4对被调用函数的声明和函数原型179
7.5函数的嵌套调用182
7.6函数的递归调用184
7.7数组作为函数参数192
7.7.1数组元素作函数实参193
7.7.2数组名作函数参数194
7.7.3多维数组名作函数参数197
7.8局部变量和全局变量199
7.8.1局部变量199 7.8.2全局变量200
7.9变量的存储方式和生存期204
7.9.1动态存储方式与静态存储方式204
7.9.2局部变量的存储类别205
7.9.3全局变量的存储类别208
7.9.4存储类别小结212
1 第一章 C语言概述
(1)C程序是由函数构成的。 这使得程序容易实现模块化。
(2) C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。
(3)C语言不能嵌套定义函数,但可以嵌套调用函数,也可以递归调用。
第三章
1. C的数据类型
2.变量命名的规定:C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
52+10+1=63 数据类型 构造类型 枚举类型 enum
数组类型
结构类型 struct
联合类型 union 单精度实型
双精度实型
double
指针类型 实型(浮点型) 基本类型 整型 int
字符型 char 2 09年选1考题
不能用关键字作为标识符
关键字归纳(32个)考题07年1
常量类型:const (1个)
数据类型名:int ,float,double,char,void (5个)
数据类型的修饰符:unsigned,signed,short,long (4个)
用户定义的数据类型:struct,union,enum,typedef (4个)
变量的存储类型名:auto,static,register,extern (4个)
控制结构语句标识:
if-else,switch-case-default-break,while-do-for-continue,goto,retrun(12个)
求类型大小运算符:sizeof (1个)
其余:volatile (1个)
3.运算符、优先级、结合性
1)最高级别
(1)小括号()
(2)下标运算符([ ])
(3)分量运算符(.->)
2)单目 3 (1)!,++,--,-,注意++,--的位置
(2)强制类型转换运算符( (类型) ):转化后变量本身类型没有变化,如08选2
(3)指针运算符 (*和&),注意:[]符号
C语言中指针变量作为函数参数详解
C语言中指针变量作为函数参数详解
在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。
像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合。
有的时候,对于整数、小数、字符等基本类型数据的操作也必须要借助指针,一个典型的例子就是交换两个变量的值。
有些初学者可能会使用下面的方法来交换两个变量的值:
#includevoid swap(int a, int b){ int temp; //临时变量 temp =
a; a = b; b = temp;}int main(){ int a = 66, b = 99; swap(a, b);
printf("a = %d, b = %dn", a, b); return 0;}
运行结果:
a = 66, b = 99
从结果可以看出,a、b 的值并没有发生改变,交换失败。这是因为 swap() 函数内部的 a、b 和 main() 函数内部的 a、b 是不同的变量,占用不同的内存,它们除了名字一样,没有其他任何关系,swap() 交换的是它内部 a、b 的值,不会影响它外部(main() 内部)
a、b 的值。
改用指针变量作参数后就很容易解决上面的问题:
#includevoid swap(int *p1, int *p2){ int temp; //临时变量
temp = *p1; *p1 = *p2; *p2 = temp;}int main(){ int a = 66, b = 99;
swap(&a, &b); printf("a = %d, b = %dn", a, b); return 0;}