C语言难点解析.doc

上传人:滴答 文档编号:1255466 上传时间:2019-01-19 格式:DOC 页数:12 大小:98.50KB
下载 相关 举报
C语言难点解析.doc_第1页
第1页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、C 语言难点分析整理!这篇文章主要是介绍一些在复习 C 语言的过程中笔者个人认为比较重点的地方,较好的掌握这些重点会使对 C 的运用更加得心应手。此外会包括一些细节、易错的地方。涉及的主要内容包括:变量的作用域和存储类别、函数、数组、字符串、指针、文件、链表等。一些最基本的概念在此就不多作解释了,仅希望能有只言片语给同是 C 语言初学者的学习和上机过程提供一点点的帮助。 变量作用域和存储类别: 了解了基本的变量类型后,我们要进一步了解它的存储类别和变量作用域问题。变量类别 子类别静态变量(离开函数,变量值仍保留)自动变量局部变量寄存器变量静态变量(只能在本文件中用)全局变量非静态变量(允许其他

2、文件使用)换一个角度变量类别 子类别静态局部变量(函数) 静态全局变量(本文件) 静态存储变量 非静态全局/外部变量(其他文件引用) 自动变量寄存器变量动态存储变量形式参数extern 型的存储变量在处理多文件问题时常能用到,在一个文件中定义 extern 型的变量即说明这个变量用的是其他文件的。顺便说一下,笔者在做课设时遇到 out of memory 的错误,于是改成做多文件,再把它 include 进来(注意自己写的*.h 要用“”不用字符串型 sprintf(char *,格式化输入)赋给字符串,而不打印出来。课设时用也比较方便注:对字符串是不允许做=或!=的运算的,只能用字符串比较函

3、数 指针: 指针可以说是 C 语言中最关键的地方了,其实这个“指针”的名字对于这个概念的理解是十分形象的。首先要知道,指针变量的值(即指针变量中存放的值)是指针(即地址)。指针变量定义形式中:基本类型 *指针变量名 中的“*”代表的是这是一个指向该基本类型的指针变量,而不是内容的意思。在以后使用的时候,如*ptr=a 时,“*”才表示 ptr所指向的地址里放的内容是 a。指针比较典型又简单的一应用例子是两数互换,看下面的程序,swap(int c,int d) int t; t=c; c=d; d=t; main() int a=2,b=3; swap(a,b); printf(“%d,%d”

4、,a,b); 这是不能实现 a 和 b 的数值互换的,实际上只是形参在这个函数中换来换去,对实参没什么影响。现在,用指针类型的数据做为参数的话,更改如下:swap(#3333FF *p1,int *p2) int t; t=*p1; *p1=*p2; *p2=t; main() int a=2,b=3; int *ptr1,*ptr2; ptr1= ptr2= swap(prt1,ptr2); printf(“%d,%d”,a,b); 这样在 swap 中就把 p1,p2 的内容给换了,即把 a,b 的值互换了。指针可以执行增、减运算,结合+运算符的法则,我们可以看到: *+s 取指针变量加

5、1 以后的内容*s+ 取指针变量所指内容后 s 再加 1(*s)+ 指针变量指的内容加 1指针和数组实际上几乎是一样的,数组名可以看成是一个常量指针,一维数组中 ptr= if(*s=+|*s=-) /*判断是否有符号*/ sign=(*s+=+)?1:-1; /*用到三目运算符*/ while(*s!=0) /*对每一个字符进行操作*/ m=m*10+(*s-0); s+; /*指向下一个字符*/ return m*sign; 指向多维数组的指针变量也是一个比较广泛的运用。例如数组 a34,a 代表的实际是整个二维数组的首地址,即第 0 行的首地址,也就是一个指针变量。而 a+1 就不是简单

6、的在数值上加上 1 了,它代表的不是 a01,而是第 1 行的首地址, void Output(ST *); void Bubble(ST *); void Find(ST *); void Failure(ST *); /*函数声明:这五个函数都是以一个指向 ST 型(事先定义过)结构的指针变量作为参数,无返回值。*/ void (*process5)(ST *)=Input,Output,Bubble,Find,Failure; /*process 被调用时提供 5 种功能不同的函数共选择(指向函数的指针数组)*/ printf(“nChoose:n?“); scanf(“%d“, if(

7、choice=0 int chinese; int maths; int phy; int total; ST; main() ST aN; /*存储 N 个学生信息的数组*/ FILE *fp; void (*process3)(ST *)=Output,Bubble,Find; /*实现相关功能的三个函数*/ int choice,i=0; Show(); printf(“nChoose:n?“); scanf(“%d“, while(choice=0 if(h=NULL) h=p; else q-next=p; ch+; q=p; q-next=NULL; /*链表结束*/ return h; 逆向建立:NODE *create()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。