前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇c语言范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:C语言 函数调用 间接访问
中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2015)12-0000-00
C语言程序设计是结构化程序设计,函数是C语言的基本模块,函数调用是C语言运行的重要机制,在C语言中除了提供大量的库函数外,要实现具体的功能必须自己定义函数,定义出函数要实现的功能,使用函数的过程就是调用函数的过程,即函数间的接口,接口的实现是通过参数传递方式实现,函数调用的关键是正确传递实参值,用正确的形参变量来接收。
1 函数的定义
所谓函数定义,即定义函数功能,如求和,求最值,排序功能,用C语言提供的选择结构、循环结构写出具体的代码实现。如果函数只是完成某项特定的处理任务可以定义无返回值的函数,如果函数最后要返回结果,可以定义的返回值的函数,如下两段代码左边有返回值,右边没有返回值。
int sum1(int m)//函数头部
{ int i,sum=0;
for(i=1;i
sum=sum+i;
return sum; }
void sum2(int m)//函数头部
{ int i,sum=0;
for(i=1;i
sum=sum+i;
}
s=sum;
}
2 函数的调用
函数调用的一般形式为:
函数名(实参列表);
实参可以是常数、变量、表达式等,多个实参用逗号,分隔。
在C语言中,函数调用的方式有多种,例如:
01.// 函数作为表达式中的一项出现在表达式中
02.z = max(x, y);
03.m = n + max(x, y);
04.// 函数作为一个单独的语句
05.printf("%d", a);
06.scanf("%d", &b);
07.// 函数作为调用另一个函数时的实参
08.printf( "%d", max(x, y) );
09.total( max(x, y), min(m, n) );
在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。
3 实际参数和形式参数
在函数定义时出现函数名后边括号里的变量就是形参,形参必须是变量,因为在函数调用时形参是被赋值对象,形参只在定义它的函数内部被访问,是局部变量。
在函数调用时出现在函数名后边括号里的常量、变量、表达式、函数等是实参,实参当前值是确定的,因为它在赋号右侧。
实参出现在主调函数中,形参出现在被调函数中。
4 传值调用和传址调用
4.1两个数对调的函数实现
#include
int a=3,b=4;
void swap1(int a,int b){//值传递,也称为单向传递
int t;
t=a;a=b;b=t;
}
void swap2(int *a,int *b){//地址传递,也称为“双向传递”,实质还是单向传递
int t;
t=*a;*a=*b;*b=t;
}
main(){
swap1(a,b);
printf("a=%d,b=%d\n",a,b);
swap2(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
第一个输出结果为3,4,第二个输出结果为4,3,在这里传值调用和传址调用正确,多数教材和资料中谈到传址调用时介绍是双向传递,应该是不正确的,以下面例子为例:
4.2有下列程序
# include
void fun1(int x,int y)
{ int z;
z=x; x=y; y=z;
}
void fun2(int *x,int *y)
{ int z;
z=*x; *x=*y; *y=z;
(*x)++; (*y)++;
}
void fun3(int *x,int *y)
{ int z;
z=*x; *x=*y; *y=z;
(*x)++; (*y)++;
}
void main()
{ int a=5,b=9;
fun1(a,b);
printf("a=%d,b=%d\n",a,b);
fun2(&a,&b);
printf("a=%d,b=%d\n",a,b);
fun3(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
在这个程序中有三次函数调用,第一次调用结果还第三次调用都没有改变主调函数中变量的值第二次改变了,第一次是传值调用,第二、三次是传址调用,第二次改变的实质不是因为是传址调用,而是因为使用了间接访问。
5 C语言程序设计函数使用方法
5.1函数是C模块语言的模块
C语言的基本框架是函数,函数是C语言的基本模块,在理解中列举生活中的例子,例如一个部门一开始很小,只有一个人,相当只有一个主函数,慢慢的部门壮大起来,需要的人数增多,这时候部门就可以再进一个人,那必然有一个领导另一个,领导者就是先来的人,也就是主函数,被领导者是后来的人,即被调用函数,主函数安排任务给被调函数,要把任务内容告诉被调用函数,这变是参数传递。
5.2函数代码定义过程
定义时先定义被调用函数,然后再定义主函数,这样在主函数中就不用做函数声明了。
定义被调用函数时,先把函数名字及圆括号和大括号写,里面的代码先不写。然后写主函数定义,主函数在这里没有返回值也无参,主函数的头部定义没有问题,然后先写主函数体代码,通常主函数分三部分, 输入、调用和输出,这三部分相对比较难的是调用,调用时要分析有没有返回值,有没有参数,如果有参数,有几个并且参数的类型要确定,调用时的参数是实际参数,根据实参和形参的一一对应关系,实参确定好了,形参的类型和个数自然也就确定了,这样被调用函数的头部就定义好了。
主函数定义后,被调用函数的头部也定义好了,这时候开始写被调用函数的函数体,也是编写程序最难的一部分,涉及具体的算法。
把主函数和被调用函数定义好后,在具体开发环境下编译、链接、执行,找出程序有没有语法错误和逻辑错误,最后程序得出正确的结果。
6 结语
C语言程序设计函数部分是学习难点,它把以前学的一个函数能实现的功能分在两个或多个函数中实现,并且多个函数这间有接口,接口就是函数调用时的参数传递,参数传递时又涉及到变量的作用域和生存期,函数部分把C语言的各个知识点都联接起来了,是C语言的集成和综合,所以学好函数是学好C语言的关键。
参考文献
[1] 谭浩强.C程序设计(第三版)[M].清华大学出版社,2005年.
关键词:C语言;程序;学习
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)25-1497-03
Discussion about C Language Learning
YING Shi-yong
(Yancheng Textile Vocational and Technical College, Yancheng 224005, China)
Abstract: In regard to fragmentary knowledge of C language, the beginner have difficulty in learning it. The author puts forward some methods of studying C language from the teaching practice. It helps the beginner to solve some problems in the process of studying and seek for study methods that suit themselves.
Key words: C language; procedures; learning
1 问题的提出
随着计算机技术的普及,学习语言程序设计的人也越来越多,尤其是学习C语言的人更是多。但是不少人对计算机语言的学习比较头疼,感到力不从心。平心而论,对于初学者而言,这属于正常现象。请看下面用C语言编写的一道程序:
#include "stdio.h"
#definePI 3.1415
main()
{ float r,area;
printf("%please input the value of r:");
scanf("%f",&r);
if(r>0) s=PI*r*r;
else { if(area==0) return(0);
ease return(-1); }
printf("area=%f",area); }
这个程序的功能是通过键盘输入一个实型数,经过程序的运行后,在屏幕上显示以这个数作为半径的圆的面积。这虽然是一个比较简单的程序,却包含了C语言的很多重要的知识点。因此,对知识点的学习就显得很重要了。
2 C语言的特点
每一种语言都有自己的特点,C也不例外。它的特点如下:
2.1 语言简单,使用方便
它采用类似自然语言的语法来书写程序代码。所谓自然语言就是接近于人思维习惯的语言。用C语言编写程序的过程往往就是反映了编程者思考问题的过程。
2.2 运算符丰富
C语言总共有34种运算符号。从而使得C的运算类型很丰富,表达式类型多样化,灵活使用各种运算可以实现其他高级语言中很难实现的运算。
2.3 数据结构丰富
C本身数据类型多,如整型、单精度型、双精度型、字符型、数组型、指针型、结构体型、共同体型等,并且能实现各种复杂的链表、树、栈的运算。
2.4 具有结构化的控制语句
常用的有if……else语句、while语句、do……while语句、switch语句、for语句等。用函数作为程序模块以实现程序的模块化。
2.5 移植性好
“基本上不作修改就能用语各种型号的计算机和各种操作系统。”[1]
3 C语言入门要点
3.1 注意C语言的书写
比起经典的教学语言PASCAL来讲,C语言的书写是相对比较随便,而且具有很灵活性。但是,从易读性的角度出发还是要遵循一些规则。往往有条有理的程序在视觉上有一种美的享受。如果书写的程序没有一定的规律可寻,语句没有层次感,读者就会没有耐心去读了。书写结构就如同框架、基本轮廓。养成良好的书写习惯,对于培养严谨的思维很有帮助。在书写时要尤其要注意以下几点:
(1)一行中最好是以一个语句为佳。虽然一行中可以书写很多的语句,但在读的时候很烦琐,而且在调试程序时也不容易发现错误;
(2){}的配对。在书写时尤其要注意配对,对于要配对的{}尽量书写在同一列中。
3.2 掌握C语言的结构
C语言的程序从程序结构上看主要有顺序结构、选择结构、循环结构。程序的结构也就是程序的骨架和轮廓,对程序的执行过程有着很大的影响。
3.2.1 顺序结构
顾名思义,就是程序顺序地从第一个操作开始,一直执行到最后一个操作[2]。流程图如图a。
3.2.2 条件选择结构
例如:“如果明天下雨,我就不去看电影;如果不下雨,我就在家看电视。”我“去不去看电影”是由“天下不下雨”这个条件决定的,同时,“天下不下雨”这个条件决定了我有两中选择:“看电影”还是“在家看电视”。这就是条件选择的一个模型。
对于程序设计语言来讲,选择结构是一种很重要的结构。就文章开头的这个例程序,里面就是用了条件选择结构。首先判断r是否大于0,因为半径是负数就没有意义,所以它不可能是个负数。当半径为0是就表示是一个点圆,面积自然就是0了。
下面来看看程序中这种结构的程序执行过程:
首先判定条件是否成立,如果成立就说这个条件是真,程序就执行条件问真的子句,如果条件不成立就是说这个条件是假,程序就跳转执行它下面的条件为假的子句。
用流程图来表示,如图b。
对于这个流程图用语言可以这样描述:
if (P成立) A
else B
如果语句A或者是语句B中也是一个条件选择结构结果又会怎么样?用语言就可以这样描述了:
if(条件P1){ if(条件P2)语句A;
else语句B;}
else{ if(条件P3)语句C;
else语句D;}
这就是条件结构的嵌套。注意嵌套在C中是很重要的一种结构,不仅是可以在条件选择之间有嵌套,还可以和下面的要提到的重复(循环)之间构成嵌套。
3.2.3 循环结构
所谓循环结构就是:有一条或者是几条语句在重复执行,直到它不满足某种条件为止。典型循环结构有:当型循环和直到型循环。它们的代表语句分别是:while语句和do…while语句。当型结构的流程图如图c。
语句的执行过程就是:首先判定条件是否为真,当条件是真时,就重复执行语句,直到条件为假为止。特殊情况,条件永远为真时,就会变成死循环。
3.3 注重C语言的零碎知识点
零碎的知识点就是血肉,C语言本身的特点就是知识点很零碎,不太容易做到面面俱到,但是我们应力求不要放过每一个知识点。要在细节上多花工夫。
例如:
(1)printf函数和scanf函数。这两个函数的格式比较复杂,不同的格式要求就会有不同的输出形式。它们都是C的库函数。在需要使用标准I/O库中的函数时,就要包含#include "stdio.h"这个宏定义。
(2)编译预处理。C的编译系统对程序进行通常的编译之前,先对程序中的特殊命令进行预处理。特殊命令有:宏定义、文件包含、条件编译。编译预处理也是C语言中常用的写程序的方法。
(3)数据构造方式可以分为基本类型的数据和派生类型的数据。
(4)算术表达式、关系表达式和逻辑表达式。例如:x+y、x>y和x&&y 分别是是算术表达式、关系表达式和逻辑表达式。算术表达式的结果是根据x,y的取值不同而不同,而关系表达式和逻辑表达式的结果只有两个:1、0。另外,还要注意表达式的优先级。
3.4 要注重上机操作练习
C也是一个操作性很强的语言。编写好的程序必须要通过调试。在调试程序的过程中可以学习到很多东西。因为机器是很“无私的”,会无情地指出操作中的错误。只要有错就不能通过编译,程序就无法运行下去。上机操作的主要目的就是要通过调试程序来验证你编写的程序。程序调试是一项很细致的工作,是需要下工夫、积累经验的过程。上机调试程序不仅仅是 “验证程序的正确性”,而更重要的是“掌握调试方法和技巧”。因此上机过程中要注意经验的积累。
4 C语言提高关键
学好、用好C语言光靠入门知识还好似不够的,必须学习好它的提高部分,也是C的精华部分:数组、函数和指针。
4.1 数组
数组是一组类型相同的数据的有序集合。它是一种简单实用的数据结构。数组是用一个具有特定意义的名字代表顺序排列的一组数,顺序号就是下标变量的值。[3]在学习数组时,应该重点掌握:一维数组、二维数组和字符数组的定义、初始化和引用。尤其是基本的概念。如:int a[10]和a[8]的区别,二维数组的存放形式等。
4.2 函数
函数是实现语言模块化结构的重要体现。在设计程序的过程中,经常会在不同的程序段中出现有相同或相似功能的小块程序。如果在每个不同的程序段中都反复出现这样的小块程序,那么对整个大程序来讲它的可读性会降低,同时也会给设计者和读者带来不必要的麻烦。这就好比建造一座大楼,我们主要要做的工作是结构的设计,对于门窗、水泥和钢材等施工材料,直接可以从厂家购买使用即可,而没有必要再专门的成立门窗生产厂、水泥生产厂和钢材生产厂来生产这些施工材料。因此,我们就可以将反复出现的小块程序组成在一起形成一个模块,然后其他的函数就可以通过语句直接调用这些模块即可,这是函数的主要思想。
想要学好函数还得在这些方面下工夫:函数的定义、函数的参数、函数的值、局部变量和全局变量的一些基本概念;同时对于函数的调用(嵌套调用、递归调用等)过程要特别注意,一定要理清调用的关系及参数的正确传递。
要学好函数。善于利用函数减少重复编写程序代码的工作量。
4.3 指针
指针部分是C语言精华中的精华,主要是因为指针的应用可以使程序更加简洁、紧凑和高效。指针使用的好处是显而易见的,但是要学好用好它却不是很容易的,学好指针的关键是要深入理解基本的概念,如指针、变量的指针、指针变量等;另外还要注意与前面的知识相联系,如指针和数
5 结束语
C语言的应用很广,著名的UNIX操作系统就是用C语言来写的。现在的C++也是在C语言的基础上发展起来的。本文粗浅地谈了C语言的学习,由于篇幅所限,只是提供了学习的方法和途径。所以有兴趣的初学者应在入门之后反复练习,悉心揣摩,由浅入深,循序渐进,就一定能熟练地掌握和运用好C语言。
参考文献:
[1] 谭浩强. C程序设计[M]. 北京:清华大学出版社,1997.
区别:
1、C语言适用范围大,可移植性好,嵌入式的C语言是跑在嵌入式的开发板上的,CPU和我们电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的;
2、C语言允许直接访问物理地址,可以直接对硬件进行操作,嵌入式有很多时候会受到硬件的限制,同时,在编写嵌入式的程序时,对于实时性要求可能会很高;
3、C语言程序生成代码质量高,程序执行效率高,由于嵌入式系统一般内存,cpu等资源有限,编程时需要特别考虑系统的高效性。
(来源:文章屋网 )
考研有四门课:数学、英语、政治、专业课,如果不是计算机专业的,不需要考C语言。
C语言:是一门通用计算机编程语言,应用广泛,C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器以及超级电脑等作业平台。
(来源:文章屋网 )
1、编译系统最底部出现241表示代码中含有程序不认识的字符。
2、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
(来源:文章屋网 )