77范文网 - 专业文章范例文档资料分享平台

电信考试计算机专业:C语言知识复习(39页)(2)

来源:网络收集 时间:2020-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

1、函数定义

函数类型 函数名( 形式参数列表 ) {

内部变量定义和声明部分 执行语句

}

如:

int max (int x , int y ) {

int z ;

z= x > y ? x : y ; return ( z ) ; } 注意点:

1)函数类型是指返回值的类型,即要与return语句后跟的表达式的值的类型一致。若函数类型为void则说明该函数无返回值,即函数体里不能出现return 语句。

2)形式参数列表里定义的变量要记得给它们指定类型,而且如果同时要定义多个,应在每个前面都分别指定类型名,而不能写成int x,y; 3)函数体里能写的语句跟main函数一样,在开头可定义所需要的变量,后面跟上一堆执行语句。 2、函数调用流程

以上面的函数为例,在main函数进行调用: void main() {

int a,b,c;

scanf(“%d%d”,&a,&b); printf(“%d”,max(a,b)); } 或 {

c=max(a,b); printf(“%d”,c); }

以上两种方法都会在屏幕中打印出a,b间的较大值。

调用函数的格式 函数名(实际参数列表);调用的时候像什么函数类型,形式参数的类型就不要加上去了。max(a,b)中max就是函数名,写上变量名a,b是实际参数列表,执行这个调用语句时,会先把a,b的值给相应位置的形式参数即执行了x=a,y=b这样的操作,然后开始执行max函数的函数体的语句。当max函数体里执行到一个return语句时,则max函数结束执行,将return后的表达式的值返回给main函数调用max函数的那个位置,即若上面a=3,b=5则max(a,b)return后的表达式的值应该是5也就是说执行完max后把5返回到调用max的位置可看成printf(“%d”,5);或另一种解法的c=5。 }

十三、指针

1、指针变量的声明: 类型名 * 指针变量名; 2、通过指针变量访问它所指向的普通变量的值

先将普通变量的地址赋值给指针变量,再通过指针运算符* 得到普通变量的值。 int *p,x,y; x=3; p=&x;

则printf(“%d”,*p);会打印出3即x的值 y=*p;则y的值变为3 *p=5;则x的值变为5

3、指针变量加上(减去)一个位移的效果

若指针变量存入的是数组元素的地址,则其加一减一得到的是那个数组元素下一个或前一个元素的地址。 int a[10]; p=&a[3]; *p得到的是a[3]的值。

若p++;此时p存放的是a[4]的地址&a[4]; *p得到的就是a[4]的值。 或p--;此时p存放的是a[2]的地址&a[2],*p得到的就是a[2]的值。 4、行指针

主要是对于二维数组来说的,二维数组每行都有自己的地址,第0行地址用 数组名 表示,第i行地址为 数组名+i;而想要得到二维数组里一个元素的地址,必需先得到其所在行的地址,然后再由那个地址得到元素的地址,比如说 int a[3][4];定义了一个二维数组,该二维数组第0行的地址为a,第1行的地址为a+1,第2行的地址为a+2,想从行的地址得到元素的地址,需在行地址前加上指针运算符“*”,即*a就是第0行首个元素的地址即a[0][0]的地址,而a[0][2]的地址就是在a[0][0]的地址基础上加上位移量2,即*a+2,然后想得到a[0][2]这个元素的值呢就再加上一个指针运算符“*”,即*(*a+2),类似地,想得到a[2][2]这个元素的值呢就是*(*(a+2)+2)

定义行指针变量: 类型名 (*变量名)[数组长度];

如int (*p)[4],a[3][4]; p=a;此时就可把p当成a来用,用法同上所述。

5、判断是否合法访问数组元素:若是指针法访问,判断指针后跟的是否地址;若是下标法访问,判断下标有无越界。 6、函数指针:函数名即为函数的地址(指针)

1)函数指针变量的定义: 类型名 (*变量名) (形参列表);如 int (*p)();

2)赋值:指针变量=函数名;设有个函数其函数名为max,则要将该函数的地址给p的话只要执行如下语句即可 p = max;

7、指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,定义格式为 类型名 * 变量名[数组长度]; 如int * p[10];

8、指向指针的指针:指针变量也是一种变量,故在内存中也有对应的一个地址,而要存放指针变量的地址,就要求助于用来存放指针变量的地址的指针变量,定义格式 类型名 ** 变量名;如 int *p1; int **p2; int a=3;可进行赋值p1=&a; p2=&p1; 则a 、*p1和 **p2的值都是3. 十四、宏定义

1、无参宏定义 #define 标识符 值 定义后,出现所定义的标识符的地方都将以定义时指定的值来代替。

#define M 2+3 main() {

int x;

x=M*M; 则x的值为2+3*2+3=11若想得到的结果是(2+3)*(2+3)则定义时也写成这样 #define M (2+3) }

注意#define、标识符、值之间都要用空格隔开,且宏定义结尾不需加分号。 2、带参宏定义 #define 标识符(参数表) 值

#define S(x,y) x*y main( ) {

int a=3,b=4,c=5,d=6;

printf(\此时会打印出 a*b=12

printf(\此时会打印出a+b*c+d=29,带参宏定义执行时是将a+b这样一个表达式代替x,c+d这样一个表达式代替y,

所以S(a+b,c+d)进行的是a+b*c+d的运算,而不是将a+b的值给x,c+d的值给y然后再做x*y,这点跟函数调用传递参数是不一样的。

}

3、自定义类型名typedef:对已存在的类型名取一个外号。

基本格式:typedef 原类型名 新类型名;

typedef int INTEGER; 则int a,b;等价于INTEGER a,b;

typedef int NUM[10]; 则 int a[10];等价于 NUM a; a即为一个有10个元素的数组的数组名。 typedef int * INTEGER; 则int *a,*b;等价于INTEGER a,b; 十五、结构体,共用体,枚举类型 1、结构体

1)结构体类型的定义及变量的定义

struct 结构体名 {

类型 成员1; 类型 成员2; ??

类型 成员n; }变量名; 如

struct student { char name[10];

long num; int score[4];

}st1;定义类型时同时定义变量

struct student st2;定义类型后,用类型名定义变量 还有一种 struct

{ char name[10];

long num; int score[4];

}st3;不给类型名,直接定义变量

2)结构体变量所占字节数:各成员各占字节数之和,如以上st1,st2,st3的字节数皆为10+4+2*4=22

结构体数组的定义及初始化

struct student a[3]={{ \

{\ {\}

结构体成员的访问

结构体变量名. 成员名 如st1.name[2]

通过指针访问:struct student *st; st=&st1; (*st).num 或 st->num

2、共用体

1)共用体类型的定义及变量的定义

union 共用体名 { 类型 成员名1;

?

类型 成员名n; };

变量的定义与结构体类似,也有三种方法。 union data

{

int i;

char ch; float f;

}d1; 定义类型时同时定义变量

union data d2; 定义类型后,用类型名定义变量 union {

int i;

char ch; float f;

}d3; 不给类型名,直接定义变量

2)共用体变量所占字节数:各成员所占字节数的最大值,如上d1,d2,d3所占字节数皆为4.(单精度浮点型变量所占字节数最多为4). 3)共用体成员的访问

共用体变量名. 成员名 如d1.f

通过指针访问:union student *d; d=&d1; (*d).num 或 d->num

3、枚举类型

1)枚举类型的定义:

enum 枚举名{枚举元素名1,枚举元素名2,?,枚举元素名n}; 2)枚举元素的值:

默认值分别为0、1、?、n-1。枚举元素的值也可在定义时重指定,对于没有指定值的元素,按顺序加1

如enum weekday{sun=7,mon=1,tue,wend,thur,fri,sat};则sun值为7,mon值为1,tue值为2,wend值为3,thur值为4,fri值为5,sat值为6 十六、Turbo C的使用 1、菜单激活: F10

2、菜单切换:左右方向键在不同菜单间切换,上下方向键在同一个菜单不同选项间切换。 3、载入文件:两种方法:1.找到源文件所在位置,直接将其拉到Turbo C快捷方式上;2. F3 4、运行程序: ctrl+F9 5、看程序运行结果:alt+F5 6、进入编辑状态:菜单Edit 7、保存: F2

8、插入状态切换: Insert键

⊙巩固练习 一、巩固练习1

1、以下不是C语言的特点的是( )。 A、语言简洁紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件操作 D、C语言移植性好

2、下列字符序列中,不可用作C语言标识符的是( )。

A、abc123 B、no.1 C、_123_ D、?_ok 3、正确的C语言标识符是 ( )。

A、?_buy_2 B、2_buy C、?_buy D、buy? 4、请选出可用作C语言用户标识符的一组标识符( )。

A、void B、a3_b3 C、For D、2a define _123 -abc DO WORD IF Case sizeof 5、下列符号中,不属于转义字符的是( )。 A、\\\\ B、\\0xAA C、\\t D、\\0 6、不属于C语言关键字的是( )。

A、int B、break C、while D、character 7、是C语言提供的合法关键字的是( )。

A、Float B、signed C、integer D、Char 8、以下不能定义为用户标示符的是( )。

A、scanf B、Void C、_3com_ D、int 9、一个C程序是由( )。 A、一个主程序和若干子程序组成 B、一个或多个函数组成 C、若干过程组成 D、若干子程序组成

10、C语言程序的基本单位是( )。

A、程序行 B、语句 C、函数 D、字符 11、下列说法中,错误的是( )。

A、每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号 B、每个函数都有一个函数头和一个函数体,主函数也不例外 C、主函数只能调用用户函数或系统函数,用户函数可以相互调用 D、程序是由若干个函数组成的,但是必须有、而且只能有一个主函数 12、以下说法中正确的是( )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行

D、C语言程序中的main( )函数必须放在程序的开始部分 13、C编译程序是( )。 A、C程序的机器语言版本 B、一组机器语言指令 C、将C源程序编译成目标程序 D、由制造厂家提供的一套应用软件

14、以下选项中,合法的用户标识符是( )。

A、long B、_2abc C、3dmax D、A.dat 15、以下选项中,合法的实型常数是( )。

A、5E2.0 B、E-3 C、2E0 D、1.3E

16、已知大写字母A的ASCII码值是65, 小写字母a的ASCII码是97,则用八进制表示的字符常量’\\101’是( )。 A、字符A B、字符a C、字符c D、非法的常量 17、以下选项中, 合法转义字符的选项是( )。

A、’\\\\’ B、’\\018’ C、’xab’ D、’\\abc’ 18、以下选项中,正确的字符常量是( )。

A、”F” B、’\\\\’’ C、’W’ D、’’ 19、以下选项中可作为C语言合法整数的是

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库电信考试计算机专业:C语言知识复习(39页)(2)在线全文阅读。

电信考试计算机专业:C语言知识复习(39页)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1005975.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: