C语言心得与基础知识

2024-08-27

C语言心得与基础知识(精选9篇)

C语言心得与基础知识 篇1

1.把 i 的值定义为浮点型,逻辑上正确,但是严格来说不对 浮点数的存储带来的问题:

float,double都不能保证可以存储一个小数、近似值 1.213e+2 例题:如何判断浮点型变量 X 的值是否是零

if(|x-0.000001|<=0.000001)shi;else no;

为什么循环更新的变量不能定义成浮点型?

心得:试数,数学归纳法,五次在纸上

2.自增[自减]

3.例子:回文数

12112321123

43214.什么时候使用while,什么时候使用for,多尝试!do...while 主要用于人机交互。

do{....} while(表达式);while 与 for 是等价的,可以相互转换; 数组为n个变量连续分配内存空间

所有的变量数据类型必须一样所有变量所占的字节大小必须相等

例子:

int [3];

初始化: 完全初始化

不完全初始化不初始化,所有元素是垃圾值

清零 int [3] = {0};一位数组名不代表数组中所有的元素,代表地址

是否存在多维数组,不存在因为内存是线性一维的,N维数组可以作为每个元素是N-1维数组的一维数组

6.游戏

分感官效果和内核设计两部分.感官效果,涉及图形技术图像技术、音频技术等等多媒体编程.内核设计,要做一个合理的游戏,必须在明确游戏思路和算法的前提下,精确定义玩家可以从事什么行为,不能从事的行为要怎么样标记,异常的操作又要怎么处理。7.函数定义的本质:详细描述之所以能够实现某个特定功能的具体方法

return表达式的含义:终止被调函数,向主函数返回表达式的值。如果表达式为空,则只终止函数不向主调函数返回值

函数返回值的类型也称为函数的类型,如果函数名前面的返回值类型和函数执行体 中的return,表达式中的类型不同的话,最终函数返回的类型一函数名的类型相同。函数分为有参函数和无参函数。库函数,自定义函数。有返回值,无返回值函数 普通函数和主函数,一个程序只能有且只有一个主函数。主函数可以调用普通函数。普通 函数可以相互调用。主函数是程序的入口,也是程序的出口。

{值传递 和地址传递函数}

8.指针

int * p;P是变量名,p变量的数据类型是int * 类型,而int *类型实际就是存放int 类型变量地址的 类型。*p代表的是以p的内容为地址的变量

指针就是地址,地址就是指针,地址就是内存单元的编号(门牌号),指针只是编号。指针变量是存放地址的变量。指针和指针变量是两个不同的概念。但是要注意,通常我们叙述时会把指针变量简称指针。

指针的重要性:表示一些复杂的数据结构,如链表,树,图等模拟现实的显示;快速的传递数据。使函数返回一个以上的值(普通函数返回一个值,return)。直接访问硬件。能够方便的处理字符串。是理解面向对象语言中的基础。。。指针是C语言的灵魂。

指针的分类:基本类型的指针;指针和数组;指针和函数;指针和结构体;

指针的定义:

地址:地址就是内存单元的编号(门牌号),地址是从零开始的非负整数。

范围:CPU(内存的速度快于硬盘)直接处理内存条里的数据。。CPU如何控制内存条,先把内存条的数据读入CPU里,CPU内部进行处理,把结果写回内存条,但内存条数据达到一定程度,会一次性写到硬盘。(控制线,地址线,数据线)。通过地址线能确定CPU对内存条的哪个单元进行控制。范围:【0--4G-1】

指针:指针变量就是存放内存单元编号的变量

指针的本质上就是一个操作受限的非负整数。(不能进行相加等运算,可以进行相减,连续空间的不同单元)。

基本类型的指针:

指针和数组:包括一维、二维数组。

一维数组名是一个指针常量,存放的是一维数组第一个元素的地址。

如果一个函数要处理一个一维数组,则需要接收该数组的哪些信息?界定一个一维数组要几个参数:

sizeof 的返回值就是给数据类型所占的字节数

一个指针变量无论他指向的变量占几个字节,该指针变量本身只占四个字节。

动态内存分配的问题:

数组的优点:存取速度快

传统数组的缺点:

数组的长度必须事先指定,不能是变量

例如:int a[5];int len = 7;int a[len];//错误

传统形式定义的数组,该数组的内存程序无法手动编程释放,只能在函数运行完毕后由系统自动释放。数字一旦定义,系统为该数组分配的存储空间就会一直在。。在一个函数运行期间,系统为该函数中所分配的空间会一直存在,直到函数运行完毕后由系统自动释放。

数组的长度不能在函数的运行过程中动态的扩充或缩小。数组的长度 一旦定义,其长

度就不能在改变。

A函数定义的数组在A函数运行期间可以被其他函数调用,当A运行完毕后,A函数中的数组将无法在其他函数使用。(A内的内存空间被释放啦)传统方式定义的数组不能跨函数使用。

为什么需要动态分配内存:

因为能解决传统数组的缺陷。传统数组也叫静态数组。

动态内存分配举例: int *p =(int *)malloc(4);//12行

/*1.要使用malloc函数,必须添加malloc.h这个头文件 2.malloc 函数只有一个形参,并且是整数 3.malloc(4)的4表示请求系统为本程序分配四个字节 4.malloc函数只能返回第一个字节的地址。5.地址,内存单元的编号。12行分配了8个字节,p变量占四个,p指向的内存也占四个字节

*/ 6.p本身所占的内存是静态分配的,p所指向的内存是动态分配的。

free(p);//把p指向的内存释放,p本身不能释放,而只有main函数终止由系统释放。静态内存与动态内存的比较:静态内存是由系统自动分配,由系统自动释放,静态是在栈分配的动态内存是由程序员手动分配,手动释放动态内存是在堆分配的。

跨函数使用内存的问题:

枚举:如果一个变量只有几种可能的值。。指将变的值一一列举出来。变量的值只限于列举出来的值的范围内。enum 枚举值称为枚举元素或者枚举常量。值 0,1,2,3.。。

算法:

通俗的定义:

解题的方法和步骤

狭义的定义:

对存储数据的操作 对不同的存储结构,要完成某一个功能所执行的操作不一样 例如:输出数组中所有的元素操作和要输出链表中所有的元素操作不一样...说明了算法依附于存储结构的,不同的存储结构所执行的算法不一样。

广义的定义:

广义的算法也叫泛型。无论数据如何存储的,对该数据的操作都是一样的。我们至少可以通过两种结构来存储数据,一个是数组,一个是链表。

链表:

头结点(其数据类型和首节点的类型是一摸一样的,头结点是首节点前面那个节点,头结点不存放有效数据,设置头结点的目的是方便对链表的操作),头指针(存放头结点地址的指针变量),首节点(存放第一个有效数据的节点),尾节点

头指针->头结点->首节点->.......->尾节点(null)

确定链表需要一个参数:头指针

优点:插入删除元素效率高,不需要一个连续的很大的内存。

NULL本质也是零,而零 不代表数字零,而代表的是内存单元的编号零。\以零为编号的存储单元不可读不可写

字符串是作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的,字符串的实际长度与数组的实际长度相等。字符串结束标志: ‘’例如:C Program 共有9个字符,但内存占10个字节,字符串作为一维数组存放在内存中。缺点:查找某个位置的元素效率低

1、C中内存分为四个区

栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。

堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所分配的空间一直占着不放,导致内存泄露。

全局局:用来存放全局变量和静态变量。存在于程序的整个运行期间,是由编译器分配和释放的。

文字常量区:例如char *c = “123456”;则”123456”为文字常量,存放于文字常量区。也由编译器控制分配和释放。

程序代码区:用来存放程序的二进制代码。

C语言心得与基础知识 篇2

一、教学环境和方式的整合

伴随着现代教育技术在大学课堂中的普及, 多媒体教学的使用, 使越来越多的教师改变了以往“黑板、粉笔”的教学方式。多媒体的教学辅助对于优化教学过程, 丰富教学的信息量, 提高教学的效率上起到的作用是毋庸置疑的。但是, 在广泛使用多媒体的过程中有些教师对其产生了很大的依赖性和使用误区, 把多媒体的优势当成对自己在课堂教学中的减负途径, 很多知识原理的推导, 算法语句的运算过程全部浓缩在一张PPT上, 上课时一晃而过, 很多时候本应该留给学生思考的部分全部被演示文稿替代。而就C语言这门课的课程特点而言, 必要的程序演示和运算过程讲解是非常重要的, 尤其对于初次接触程序语言运算的学生而言。因此, 在C语言教学中, 教师需要继续发挥传统教学的优势, 在教学中构建“多媒体+黑板+计算机程序演示”的教学方式, 把传统和现代教学环境融合在一起。例如, 在进行C语言的基本控制结构和基本控制语句的使用方法的教学中, 教师可以通过PPT向学生阐述C语言中常用的基本结构, 同时可以借助形象的比拟, 让学生建立基本结构概念的同时了解这些结构在教学中的重要作用, 接下来通过黑板向学生讲解语句结构中的运算过程是怎样的, 计算机在得出结果的过程中是怎样进行运算、选择和循环的。与此同时, 教师可相应地举一简单例子, 让学生模拟计算机先通过读程序, 然后自己进行计算得出结果, 最后再通过计算机向学生演示运算的答案。

二、多种教学方法的合理运用

在C语言的教学中注重语法的讲解, 重视编程技巧的介绍一直是教学的侧重点, 而过多地在教学中反复强调这两部分的讲解往往会使得教学陷入单调、乏味的困境中。理论知识的阐述和讲解不可缺少, 但是在教学中教师却可以通过灵活使用不同的教学方法来提高学生学习兴趣和效率。

(一) 在问题情境中教学

在《C语言程序设计》中, 结构化程序设计作为重要的教学内容之一, 占据着重要的地位。教师在教学中向学生讲解程序其实就是将程序细分和梳理的过程。而单一的讲解教学容易导致课堂教学“一言堂”的现象。因此, 在C语言程序设计教学过程中引用“问题情境”通过问题设问进行教学, 让学生在问题的驱动下, 带着具体问题进行知识点的学习, 这样不仅有利于学生自己构建和主动理解知识, 同时有利于培养学生的学习能力。在解决问题的过程中, 教师应引导学生主动去探究, 按照“提出问题、分析问题、解决问题”的思路, 解决每一个问题。教师在学生完成一个问题后, 应及时对程序中存在的问题进行点评和指正, 加强学生对知识点的理解和掌握, 最后进行有效的归纳总结。

(二) 枚举法与对比法在教学中的运用

在C语言的教学中举例讲解知识点十分重要, 因为学生要接触的是专业的计算机用语, 抽象的语言指令和运算符号, 如果缺少必要的举例讲解, 理解并掌握这些知识将会是一个困难的过程。以算法概念讲解为例, “在C语言中所谓算法就是一个有穷规则的集合, 其中的规则确定了一个解决某一特定类型问题的运算序列”这段话的描述其实就好比我们要去一个地方, 首先要弄清楚路线, 而去这个地方的路线很多, 我们可以根据需要选择最适合的。而程序中算法也就是为解决一个具体问题而采取的明确的有限的操作步骤。

此外, 在C语言的教学中, 对比教学也会产生事半功倍的效果.例如在教学C语言循环语句的过程中, 教师逐一讲解每条循环语句的用法不如进行对比讲解, 让学生能在短时间内知道它们各自的功能、用法, 同时又能知道循环语句之间的联系、区别。以“while循环、dowhile循环”为例, 在一般情况下这两条循环语句可以用来处理同一个问题, 但是它们也有不同的循环格式和执行过程。当用While和dowhile循环时, 循环变量的初始化的操作是在循环体之前, 同时while和do-while都是在循环体内修改循环变量的值。而两者之间也是有区别的, while循环是先判断条件, 后执行循环体, 而do-while循环是先执行循环体后判断条件。一个称为“当型”, 一个称为“直到型”。如果初始条件为假, while循环和for循环的循环体一次也不做, 而do-while的循环体会执行一次。通过这种对比教学, 学生就能更好地掌握这两种种循环。

相比起教学中的平铺直叙, 结合知识的特点使用不同的教学方法, 一方面, 会使得知识变得生动形象, 易于学生理解, 让学生从课堂中获得更多的知识。另一方面, 能帮助教师在有限的课堂教学中提高教学效率, 把知识的传输过程转化对学生学习能力的培养。

三、结束语

C语言程序设计作为一门重要的基础课程, 在提学生专业素养上的作用不言而喻, 如何上好这门课不仅仅是对教师的要求, 同时也应成为教师在教学中不断探索的动力。为此, 教师还需要不断挖掘符合学生学情的教学方法, 让教学方法的不断创新成为人才培养的永恒动力。

参考文献

[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社, 2001.

[2]谭浩强.C程序设计 (第三版) [M].北京:清华大学出版社, 2005.

[3]李步洪.《光电技术》课程的教学改革与实践[J].福建师范大学学报:自然版, 2002, 18 (2) :104.

C语言心得与基础知识 篇3

【摘要】随着教育改革的深入和计算机网络技术的发展,计算机自动化考试已经成为一种趋势,针对目前考试系统只具备组卷评分功能,缺乏教师与学生的沟通互动及用户使用范围受限的问题,本系统采用B/S网络结构模式扩展了用户使用区域,并增加评价与推送功能,完善了教学反馈环节。本系统首先进行组卷、阅卷、评分,完成对学生知识点的考核,然后统计每个学生知识点的得分、错题率等信息,生成教学方案反馈给老师以促进教学改革,同时把错题知识点汇总,通过APP客户端发送给学生。

【关键词】无纸化考试 B/S架构 C语言考试系统

【基金项目】2013年,省级教研项目:基于“理实贯通、多元协作”的信息与通信工程学科教学创新研究,项目编号:2013286;2015年,湖北工业大学校级项目:基于PBL教学模式的智能考试、评估、推送C语言学习方案研究,项目编号:校2015062;2014年,湖北工业大学校级项目:面向电子信息类专业的一体化CDIO工程教育改革实践,项目编号:校2014013;2013年,湖北工业大学校级项目:电气卓越工程师培养程序设计类课程改革研究,项目编号:校2013011;2015年,华中师范大学中央高校基本科研业务费项目:基于设备指纹的数字音频被动取证关键技术研究,项目编号:CCNU15A05054;大学生创新创业训练计划项目(201510500035)。

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)04-0211-02

一、引言

C语言作为国际上广泛流行的计算机高级程序设计语言,在广大高校的计算机及相关专业中是一门必修课程。对于C语言的考核虽然已经走向计算机自动化阅卷的道路,但目前的考试系统的设计局限于技术细节改善,如客观题评分标准的完善、随机组建算法设计,而忽视了教学的本质——考试只是教学的一个环节,而不是终极目标。

(一)系统需求分析

根据现在考试系统的现状,针对目前考试系统只具备组卷、评分功能,缺乏教师和学生的沟通互动,信息反馈及用户使用范围受限等问题,本系统强化考试后的反馈环节,在题库的数据库组建时,考虑题目与知识点的对应关系,题目的难度分级。学生在预习时,通过查看其它学生的考试结果,可以预判学习的重难点,合理分配学习时间。

(二)系统设计分析

二、系统的设计与实现

(一)系统总体设计

根据系统需求分析,在线并发C语言考试系统由两个PC客户端和一个Android客户端组成,设计分为两个阶段实现:(1)先完成基于B/S模式的教师和学生的PC客户端系统;(2)在PC客户端的基础上开发基于Android手机平台的反馈和师生交流系统,在线并发C语言考试系统采用B/S架构,用户可以在PC客户端进行系统访问,PC端进行数据的读取和存储,并提供完善的考试管理系统,该系统采用Basic语言在VB开发环境下实现。

(二)学生考试模块

1.考生登录模块

首先判断考生输入的账号和密码是否正确,若账号或密码错误则给出相应的错误警告,验证通过后进入后台数据库提取相关数据转入答题界面,并且记录登录次数,限制只能登录一次,否则给予相应警告。

2.考试答题模块

在后台数据库中抽取题目,将题目以选择题、判断题、填空题和程序设计题的形式在不同窗口中显示,并提示考试时间和答题结果,在时间完成后自动交卷,并将考试数据自动存入后台数据库。

3.分数显示和本地推送模块

在考试完成并提交答案后将激活分数显示和推送模块,首先将考生的答案和数据库标准答案进行比对,对比正确答案进行统计,然后将考生答案和得分情况存入后台数据库并显示到本界面,反馈给相应的考生,推送模块只有考生在点击本页面的推送按钮时才被激活,然后根据统计结果将相应的知识点和学习方案推送到本地客户端,同时将反馈的内容一并上传到教师端数据库,供教师端进行整体统计使用。

4.管理模块

在学生端管理模块部分主要实现对账号和密码的修改,考生可以在管理界面对自己的信息进行修改,首先输入初始设置的账号和密码,确认正确后就可以修改为更加安全的账号密码,保证个人的信息安全。

(三)教师管理模块

教师端登录模块与学生端基本相似,在此不做另外介绍,着重介绍几个主要的模块。

1.记录工具模块

在登录完成后便激活记录工具模块,并获得相应记录ID,初始记录为空,教师可在此记录相关的工作日志等信息,并只有相同ID才可以访问其内容,保障其安全性,另本系统工具模块自带浏览器,相关问题可随时上网查询而无需切换界面。

2.导入试题模块

点击进入导入试题模块,可以进行选择题、判断题、填空题和程序设计题的导入工作,教师输入完成并确认后系统将自动分配题号并存入后台数据库。

3.试题浏览模块

本模块主要对数据库中生成的临时temp表进行显示,点击确认后生成正式试题表并发送至学生考试客户端。

4.考生信息查询模块

考生信息查询模块主要对学生端反馈的信息进行汇总后在本地显示并供教师端查询使用,查询方式为单条件方式查询和组合式查询,查询结果在本界面进行显示。

三、系统的实现

(一)学生端功能实现流程

参加考试的考生首先进入一个登录界面,考生输入正确的账号和密码登录,进入登录界面后系统自动开始进行倒计时,考生选择相应的试题类型进入相应答题界面,答完题后返回并选择其他未作答的试题,直到答题结束后,点击提交试卷,系统自动进行处理和判断,得出考试分数并显示出来,考试分数会自动存入相应数据库的表中,考试系统会自动在本地的数据库中链接生成推送的知识点内容和相应的方案,考生可以在本地浏览或者在连接的APP客户端中进行浏览。

(二)教师端功能实现流程

教师在输入正确的账号后登录教师端,首先是组卷界面,教师可以在这个界面选择自动组卷或者人工组卷,组卷完成后可以点击预览模式进行对试卷的预览,确认无误后就可以点击确定来发布生成的试卷到学生端供考试使用。

参考文献:

[1]李雪玲,管群. 基于 PHP技术的在线考试系统设计与实现[J]. 计算机与现代化, 2009,(2): 118-121

[2]张朋. 用数据库编程开发考试系统[J]. Computer Knowledge and Technology 电脑知识与技术, 2009,(6): 1374-1375

作者简介:

c语言体会心得 篇4

C语言是在国内外广泛使用的一种计算机语言。其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl... 都是衍生自C语言。掌握了C语言,可以说你就掌握了很多门语言。

学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。

在学习一年C语言的过程中我也在慢慢探索怎样才能学好C语言,并总结了一点经验:

要了解C语言就要从语法基础来学习起,首先要是要了解它的结构,比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);

其次就是要我要怎么去运用它(我要用什么型式去应用它)。在C语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以我们在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。这些都是语法基础也是C语言的基础如果把它们都了解很好了,那么你编起程序来就很得心应手了。

比如说IF ELSE 和 SWITCH CASE 这两种条件语句都是用来判断执行功能的,那我要什么时侯用IF 什么时侯用 SWITCH呢?如果你很好地了解它们的结构和作用的话那么就知道:若它的条件分支是多个而且条件的值是整数或是一个字符值时就会选SWITCH而不会选IF。

因为如果条件分支太多时要用IF语句,这样一定会出现IF的嵌套,如果IF的嵌套越多时程序的开销就会随着增大,这样对整个程序的运行效率就大在降底。而SWITCH就不同,它只要比较一次就可以找出条件的结果比起嵌套IF它的效率就大大的提高了很多。不过SWITCH也有它的约束条件,就是它的条件值一定要是一个整型数或是一个字符值,所以碰到它不能解决的问题时我们也会通常使用IF语句,毕竟IF语句它使用起来也比较方便用的范围也比较广。所以说了解语法规则是很重要的,如果没有一个良好的语法基础是很难编出一个好的程序!学习好基础后我们就可以开始来编程了。

c语言学习心得体会二:

C语言是一种结构化语言,是大部分编程语言的基础,C语言学好了,以后的JAVA,C#以及更多的编程语言才有可能学好。下面就跟南宁达内小编一起,要学好C语言必须了解的四点:

1、课前认真预习,把下一节要上的内容先自己看一遍,把不懂的地方打个标记,等上课的时候可以请教老师。理解书上的例子,搞懂每个语句的含义,用法。看完后尝试着不看例子自己编写程序,编完以后再跟书上进行比较,看自己的程序还有哪方面的不足,再进行改正。想要真正学好C语言光看书是不够的,一定要自己多动手。

2、上课认真听讲积极思考,提高上课效率。老师上课讲述的都是课程的重点和难点,听好课程可以达到“事半功倍”的目的。

3、课后复习。把每天的上课内容回家再温习一遍,独立完成课后的作业,如果有时间,最好能找点课外书籍、课外习题什么的来巩固所学的内容。

4、主动上机,多多实践,提高动手能力。

通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机能力来促进理论学习,开阔编程思路,提高反映速度,提高分析问题解决问题的能力,锻炼心理素质,提高心理承受能力。

学习C语言的初期重点要放在掌握语言的语法和规定上,一定要养成良好的编程习惯,平时写程序注意语法规范格式控制,格式规范了,出了错误也容易找到出错的地方,这是C语言的基础;

后期的重点要转移到掌握编程的思路和基本算法上来。

课后多做习题,找一些经典例子尝试自己编写,写程序切忌半途而费,想到一个思路,就要按自己思路把它写完,就算错了,也可以让自己了解为什么这样做会错?错在哪里?

会出什么结果?以后自己也很难在这个地方犯同样的错误。

当学到一个新的知识点,就试着把它运用到以前做的习题上,不但巩固了以前学的内容,也更加能加强新知识的理解。

学习C语言就是要经过以上这样几个反复,才能前后融会贯通,积累所应该掌握的知识。

C语言是这样,其他语言也是这样,从基本抓起,多动手,多动脑,不懂就问,注意平时积累。

C语言心得体会 篇5

学习C语言的起步就是学习它的方法规则,如果把它学习得好在学习后面的时候就比较容易理。比如变量,首先要了解变量的定义方式(格式),其意义是什么(定义变量有什么用);其次就是要我要怎么去运用它(我要用什么型式去应用它)。在C语言的命令行中所有的语句都是有它自己的一定格式和形式出现在我们面前,所以在学习某种语句或命令时你首先要了解的就是它的规则是什么、有什么用、怎么实现等。这些都是语法基础,如果把它们都了解很好了,那么编起程序来就很得心应手。比如说if语句和switch语句,这两种条件语句都是用来执行判断功能的,那什么时侯用if什么时侯用switch,如果很好地了解它们的结构和作用的话那么就能灵活运用:若它的条件分支是多个而且条件的值是一个确定的值时就可以选用switch。反之,在大多数情况下就用if。

掌握了语言法规则,不一定就能编出程序来,其实学习编程就是要学习一种思想,一种思维方法,首先要确定一种算法,如从1加到100,判断润年等,我认为这些算法都是一种思维方法。画流程图就是在构建编写程序思路的过程,当画好一个流程图时编程思想也就出来了,程序也差不多了,再结合掌握的语言的方法规则,在计算机里实现就可以了。任何程序只要有思维,有想法,那么实现程序时就不会觉得无从下手。而要学习这种思维方法就是多做题,多读程序,学习别人好的思维方法,多想想一个程序还可不可以有另外一种方法来实现它。这样久而久之,自然会形成一种自己的思维方法。因此我认为不管学什么语言都是这样。

另外,良好的编程习惯也是学好C语言的重要因素。例如编写程序时用缩进的方式、写注释、程序写到一定的阶段时要做一下测试等。这些工作可以帮我们在调试程序时有很大的帮助。程序代码实现后,错误是难免的,所以也要锻炼自己的调试查错能力,而良好的编程习惯可以使我们在调试时减小工作量和提高调试效率,也有助于形成自己的编程风格。

这就是我这一个月以来学习C语言的心得

C语言是一种编译性的语言,由于出现的时间比较早,所以现在有很多不同的编译环境。在这里我不想推荐一种编译环境,只是希望大家能够找到满足自己要求的。首先我们可能会去找中文的编译环境,比如国内的WIN-TC之类,但是从以后的学习中我认为初学者还是应该从英文的环境开始入手会比较好。因为大多数的编译器都是英文的,如果对英文不习惯,为了将来你也要慢慢的去学习适应。当然不是每个人的英文水平都会那么好,那么我们可以借助于计算机,用一些在线的翻译软件,如金山词霸之类的就很好用。让我们在学习一种计算机语言的同时又可以从中掌握一些常用的英语单词,这对于我们以后学习计算机,无论是不是从事软件开发都会有好处的。

不要想以后的计算机语言会是中文的语句,这一点永远都只会是幻想。我们可以想一下,是打一个IF快一些,还是你打“如果”快一些呢?

学习语言要有目的性。没有目的你会发现自己的学习的过程中很枯燥,会渐渐失去对C语言的学习兴趣。所以我们要有一个远大而又容易实现的目的,我要用C语言来做什么?再把这个最终的目的分成部分,让我们慢慢的一点一点的来完成它,这样在学习C语言的过程中,我们就会始终陶醉在一个又一个成功的喜悦里,让我们的学习越来越有兴趣。有一天,我们会发现:原来学习C语言真的是一件很有意思的事儿,而且学好C语言也不是很难么!

学习C语言要有一定的方法。很多人学习C语言都是自学的,这里我向大家推荐一种方法。在学习的过程中,我们会发现一章一章的看下去会很枯燥,那么我们可以先掌握C语言的基本数据类型和控制结构,然后用自己的想法来实现一种功能,不会的地方可以再去书中找。不要把书当成教材,要把它当成一本字典,一个工具。如果大家还是习惯于看书中的章节循序渐近的话,我们也可以改一下,遇到不会的地方,我们可以跳过去,看下面的章节,直到把书看过一遍后我们再回到以前不懂的地方,你就会发现你已经可以看懂了。再有就是不要看一本书,每个人的思想都不相同,虽然都是C语言书籍的作者,但每个人对C语言的理解和表述都不会一样的,如果你正在看的一本书你看不懂,或是不理解,那么我建议你再去买一本另外作者写的。也就是说不一定别人说的好书就适合我们,书一定要多读多看。

学习C语言只看书也是不够的,我们要一边看书,一边上机做练习,或者在你学习了C语言的基础知识以后就可以找一些别人的程序来看,遇到不明白的函数可以再翻一下书,当然,看别人程序的时候手头有一本库函数大全是最好不过的事儿了。如果查书也理解不了,我们可以把他的程序输入到计算机里,情况好的话能够顺利通过编译,如果不能顺利执行,我们也同样可以学习到一些C语言调试方面的知识。

c语言心得体会 篇6

编程,虽然还不是很懂,但总感觉不只是学习知识这么简单,更多给我的感受是它在潜移默化中培养了人的一种能力,用自己的话来讲就是一种”代码能力“。对于同一个问题,让大家去解开答案,可能经过一些纸笔的运算都能得出结果,但是如何把这个问题转化成代码,这就是一种能力,而仅仅是将问题转换成代码,这是较为浅层次的能力,更深层的便是通过优化代码让程序运行时间缩短以及减少可能出现的bug。

如果只是单纯的学习知识,像是背英语语法知识那样去学习一门编程语言、背下代码规则(当然熟识理论知识是必须的),这样可能也可以初步懂得这门语言,但是在深入上却较为困难。我始终觉得学习编程,重点在于培养写代码的能力。就拿写文章来说,对于文字的认识,可能大家都懂,但是给定一个题目,写出来的文章质量就各有差异,有的人文章平淡无奇,而有的人的却是宏篇大论。编程也是如此,懂得了理论知识,就像是认识了文字,但是优秀的作家能将这些文字巧妙地组合在一起形成佳作,优秀的程序员也是如此,能将大家都懂得的理论知识以一种更为巧妙的方法通过代码展示出来并使之可执行。

所以,学习编程我始终认为我们每个人都应该注重写代码能力的培养。而这种培养可能需要无数次重复的练习,在获取这种能力的途中,可能有一部分人会觉得枯燥无味,因为始终看到的只是在黑色框框里输出一些数字以及字符串。刚开始的自己也是如此,但是后来那种解决问题的成就感慢慢克服了这种困难。给自己以有难度但又不超过自己能力范围的题目来练习,这样可能能逐步培养起兴趣。当然,因为每个人程度的不同,要找到适合自己能力范围的题目本身就是一种困难。以己之愚见,作为在校学生,老师的题目首先就是不错的选择,因为根据教学进度,老师都会给出不同的题目,而在此题目中必不乏难题存在,此时google一下,你可能就懂得了怎么去选择有难度又在自己能力范围的题目了。

在这个学期里写过的程序大概有八十多个,包括老师的题目以及网上的oj练习,行数在三千行左右,当然因为是零基础进来的,所以在起步阶段,“水题”的部分占所写的程序总量应该不算少,因为相信扎实的基础可能对以后会大有裨益。虽然说是水题,但是在练习的过程也发现自身存在的很多问题,通过谷歌,一步步解决那种喜悦当然不必言说啦。编译器一直用的是Dev C++和Code:Blocks,中途也尝试过VS(作为新手总想试试鲜嘛),但是对于写C来说确实显得臃肿便放弃了。也试过几个编辑器,个人觉得atom和sublime的体验还是不错的,界面比较清爽,字体颜色较多能对不同部分代码加以区分。

C语言心得与基础知识 篇7

关键词:C语言程序设计,基础课,教学

由于C语言功能强大且语法简洁的特点, 所以是学生学习计算机语言的一门很好的入门语言。《C语言程序设计》已成为我国大多数高校非计算机专业本科生的公共必修课, 对于学生而言, 由于牵涉到的概念比较复杂, 规则较多, 使用灵活, 容易出错, 又缺乏必要的计算机软硬件基础知识, 因而学习起来困难重重, 普遍认为该门课程抽象、艰涩、难懂极易产生厌学情绪;对于教师而言, 由于学生的基础薄、情绪低、课程学时少、教学内容繁多等原因, 被多数教师认为是最难教的课程之一。知识本身的难度, 学生起点的薄弱都是不可更改的事实, 那么解决目前教与学的困难现状, 就只能从教学活动入手, 寻找目前教学中存在的问题, 力求探索出适合的解决途径。

1 问题分析

目前整个教学中存在的问题有如下几点:

1.1 课程目标存在的问题

目标可以分为:培养目标、课程目标和教学目标三种。培养目标是学校根据国家的教育目的和自己学校的性质和任务, 对培养对象提出的特殊要求。实现培养目标, 必须靠课程目标和教学目标的制定与顺利实施才能完成。课程目标依据培养目标从课程的角度规定了人才培养的具体规格和质量要求, 是课程计划的重要组成部分, 明确了课程目标才能确定课程方案, 才能确定教学目标。教学目标是教学工作者根据课程目标具体要求结合学生情况而制定的, 将直接规定教与学活动的内容、程度并制约着教与学的方式方法。目前《C语言程序设计》课程 (以下简称《C》) 主要面向四类学生开设:非计算机专业理工类本科生、计算机类专业本科生、高职高专计算机类专业学生、高职高专非计算机专业理工类学生。应该说各个学校的性质、学生起点及学科专业的要求都不尽相同, 在总的培养适应21世纪信息化时代的人才需求目标下, 应该在课程目标的设置上体现出其中的差别, 但目前我们看到的课程目标的设置存在两种情况:1) 太过宽泛, 课程目标本应是明确而又清晰的, 要有“内容”和“行为”两个方面, 可以直接应用其对教与学进行评价, 但目前我们的课程目标很多地方几乎是培养目标的再述, 统一而模糊, 缺乏明确导向和可操作性;2) 不切实际, 调查显示《C》公共基础课的课程目标、专业基础课的课程目标以及高职高专的专业课或公共课表述雷同, 甚至有的地方是直接把专业课的课程目标拿来作为公共基础课的课程目标, 这里显然有问题, 不切实际的课程目标掣肘了下一步教学目标的制定以及教学任务的完成。

1.2 教学目标存在的问题

要明白教学目标不是教师随心所欲的编造, 不是课堂教学可有可无的点缀, 它在教学活动中处于核心位置, 它指出了教学的主攻方向, 规定了一节课的教学内容、重点难点、学习层次水平, 影响着教学方法的选择以及教学的深广度等, 制约着教学活动的全过程, 它既有定向功能又有调控功能。倘若确立教学目标这个环节出了毛病, 必将导致教学活动的偏差或失误。而在我们的实际教学中发现, 有两种常见现象:1) 忽略教学目标, 有的学校只有一个简单的教学进度表, 教学目标由授课教师独立完成, 而许多老师在备课时也只是“心中有数”, 在授课中通常只是罗列出本堂课要讲授哪些内容, 比如只出示教学内容为:“字符数组的定义与初始化, 字符数组的应用”, 将精力重点放在字符数组应用时应选取哪些案例, 如何做好ppt呈现等等工作上面, 根本没有教学目标的准备与制定;2) 表述不明确, 即使制定了教学目标, 也多流于形式, 或照抄课程目标中的内容, 表述不明确, 操作性不强。如“熟练掌握循环结构”“掌握字符数组的应用”, 这样的描述对课堂教学活动显然不能充分发挥导向作用。教学目标不仅是为教师的教学活动定向更是学生用以检测自己学习效果的标准, 而没有或模糊的表述, 对学生的自我核查是很难起到作用的。

1.3 教学内容与教学方法存在的问题

为了解决《C》课程的学习与授课难度, 广大一线教师做了很多尝试, 但纵观我们对教学的改进、改革, 会发现似乎更多的是在教学方法上的改革, 比如大家很熟悉的一些研究是:案例法在《C》教学中的应用、项目驱动法在《C》教学中的应用、目标法在《C》教学中的应用, 问题式教学法在《C》教学中的应用等等, 事实上教学方法的选择要受“教学内容、学生情况、教师特点”等的影响与制约, 在方法与内容两者之间, 有效的教学应该首先关乎的是教学内容, 内容如果选取或侧重点有问题, 那么方法再新颖、讲的再精彩, 其价值也是有限并值得商榷的。所以较之教学方法, 教学内容更为重要, 我们应该优先考虑的是教什么?先教什么?再教什么?后教什么?重点教什么?哪里是可以简单带过的等等。而目前我们的情况是教师对两者的关注度失衡, 备课时老师们花大力气在思考采用哪一种先进的教学方法, 或怎么用上这些先进的教学方法。忽视了很重要的一点:教什么要更重于怎么教。

1.4 教学辅助平台存在的问题

由于学时的紧张, 课上学生练习时间难以充分保证, 遇到问题, 教师很难一一照顾过来, 所以急需延展课堂的外延, 而因为互联网技术的发展, 很多学校都设计了精品课程学习网站、购买或自主研发学习平台, 希望为学生打开另一扇学习之窗, 笔者在本文统称教学辅助平台, 教学辅助平台它不仅是《C》课程, 也是当前各个学科普遍通用的教学辅助工具, 它提供了一个不受时空限制、无处不在的学习环境, 在平台上有课程的相关资源, 学生可以随时获得帮助, 教师也可以通过网络教学平台检查学生对知识点的掌握程度, 利于与学生保持及时、必要的情感交流。如下图是我校正在使用的“C语言自主学习园地”, 分“基础知识概要”、“单元测试”、“综合测试”、“经典算法”4个模块, 园地中利用率最高的是两个测试模块, 学生在测试模块中可以对知识掌握做出自我判断, 但还存在以下三个主要问题:1) 平台功能不强, 最主要的是缺少交流平台;2) 资源更新过慢, 学生做过几次之后, 题目都见过就不再愿意使用3) 师生应用不多, 这个问题也可以说是前两个问题的必然结果。没有交流, 资源更新缓慢, 就无法形成良好的使用氛围, 极大地限制平台的功能的发挥, 无法达到我们预期的目的。

2 几点建议

身边讲授C语言的老师曾做过这样的比喻, 《C》的课堂像战场, 稍不留神就有兵败的感觉。根据前述分析, 笔者有以下几点建议:

2.1 关注目标建设

这里的目标指课程目标和教学目标两个方面。

1) 对于课程目标, 要充分考虑目标的适宜性。明确我们的《C》课程是全校公共基础课, 而非专业必修课, 要全盘考虑:学校的性质、学生的起点与特点、师资力量、专业培养计划、学校的总体培养计划等等各方面因素, 它应由校、二级学院专家、授课组教师共同参与制定, 以保证课程目标适宜本校学生的发展。并且由于课程目标通常给的比较宽泛和宏观, 为了更好的实现目标, 需要制定具体的课程目标说明, 将目标中的要求逐条解读, 为下一步授课教师制定教学目标、开展教学活动提供充分的指导依据。

2) 对于教学目标, 要关注目标的制定过程。首先要改变对教学目标的制定现状, 学期和单元教学目标的制定不应是教师的个人行为, 而应由专家和一线教师集体完成, 任课教师根据学期和单元教学目标和自己所任班级学生特点制定出适宜本班的课堂教学目标, 并在每堂课教学中予以出示, 使学生明确自己的学习任务, 并检测自己的学习效果。其次, 在具体对教学目标的设置中, 要强调目标的可操作性, 学习制定教学目标的方式方法。表述上要使用清晰、易于检测、易于操作的动词来表述, 将行为具体化。例如:说出函数定义时需要注意的问题;说出while、do……while、for三种循环结构的执行流程;能用printf () 语句输出任意类型的数据;能使用循环结构求出某范围内符合要求的数据和。

2.2 加强课前备课与课后反思环节

由于前述《C》课程所具有的内容多、难度大、学时少的特点, 所以备课时做好每一堂课的教学设计就显得极为重要, 教学设计不是一个简单的方法的选择, 而是一个系统的工程, 要全方位考虑。备课时要做到:1) 熟悉课程目标及单元教学目标;2) 熟悉教材的体系和内容的主次, 重、难点;了解学生心理、生理特点, 认知水平, 精心设计课堂练习, 大学生已经具备了成人学习的心理特点即对知识的有用性要求增高, 题目设计要尽量与实际应用有关, 比如, 在顺序结构应用的课堂上, 可设计这样的题目:“某城市出租车收费标准为:a.起步价 (3千米内) 6元;b.3千米后每千米1.20元, 请输入乘车距离, 输出应花费钱数, 或输入花费钱数, 输出两地之间距离”;3) 选择合适的教法和学法, 要充分考虑实际情况, 多站在学生的角度思考, 不是一切新的, 所谓的先进的方法都可以拿来用, 最适合的才是最好的;4) 精心挑选作业, 难度适宜, 注重知识与技能训练的结合。总之, 教学活动要本着以学生的眼界设计教学思路, 预测学生可能的思维活动和问题, 设计相应的对策, 突出重点, 分散难点。

课后要及时进行教学反思, 反思是教师对教学实践的再认识、再思考, 通过总结经验教训, 进一步提高教育教学水平。事实上, 在一线授课的教师每一堂课后对自己的教学都会有自己的体会和感悟, 有好的经验和遇到的难题, 只是我们缺乏坐下来加以很好的总结和修正, 这里提倡开展集体反思, 通过经验的交流和学习, 集集体的智慧, 求解教学中的瓶颈。

2.3 强化教学辅助平台的功能发挥

教学辅助平台毋庸置疑将为学生的课后自主学习提供强有力的支持, 但是这必须要将教学辅助平台的功能充分发挥, 为保证其发挥需要做到以下两点:

1) 平台资源丰富, 更新及时

平台上要保证呈现丰富的资源, 这些资源包括课件、教案、试题下载, 个人资源、成果展示、试题试卷库、在线测试等。资源的类型可以是文本也可以为视频或动画, 根据不同的内容选取最有利的展示形式, 例如“冒泡法排序”、“猴子吃桃”这样的经典算法问题可以制成动画, “循环结构”、“指针与一维数组”这样的重、难点内容可以制成授课视频供学生反复观看学习。还要及时更新资源, 根据在课堂和在平台上共同反映出的问题, 及时对资源进行补充与更新。

2) 增强交互性, 营造平台的学习氛围

要增强平台的交互性, 使学生之间、师生之间易于交流、常常交流, 只有学生的问题得到及时的反馈, 才会促使学生更愿意利用平台学习。在交流中, 问题得到解决, 学习成为乐趣;在交流中, 教师也可以发现教学中的问题, 并做出调整, 这也是教学相长的过程, 总之, 良好的学习氛围一旦形成, 整个教学就会向着一个积极正向的方向发展。

3 结语

《C语言程序设计》公共基础课教学的确面临很棘手的问题, 但是, 只要我们把握准方向, 多学习, 多探索, 勤于反思, 学会共享一定能找到解决问题的出路, 提高教学质量, 提升我们授课的艺术。

参考文献

[1]张辅良.对教育目的、教育目标、培养目标、课程目标、教学目标等概念的辨析[EB/OL]. (2011-01-19) .http://blog.sina.com.cn/s/blog_43a91c750100oi48.html.

[2]王文君.什么是从教学内容角度观课评教[EB/OL]. (2009-08-20) .http://gsyx.cersp.com/article/browse/3133550.jspx.

C语言函数说明与返回值 篇8

关键词:C语言;函数说明;返回值

函数的一般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}类型说明符定义了函数中return语句返回值的类型,该返回值可以是任何有效类型。如果没有类型说明符出现,函数返回一个整型值。参数表是一个用逗号分隔的变量表,当函数被调用时这些变量接收调用参数的值。一个函数可以没有参数,这时函数表是空的。但即使没有参数,括号仍然是必须要有的。参数说明段定义了其中参数的类型。当一个函数没有明确说明类型时,C语言的编译程序自动将整型(int)作为这个函数的缺省类型,缺省类型适用于很大一部分函数。当有必要返回其它类型数据时,需要分两步处理:首先,必须给函数以明确的类型说明符;其次,函数类型的说明必须处于对它的首次调用之前。只有这样,C编译程序才能为返回非整型的值的函数生成正确代码。

一、函数的类型说明可将函数说明为返回任何一种合法的C语言数据类型

类型说明符告诉编译程序它返回什么类型的数据。这个信息对于程序能否正确运行关系极大,因为不同的数据有不同的长度和内部表示。返回非整型数据的函数被使用之前,必须把它的类型向程序的其余部分说明。若不这样做,C语言的编译程序就认为函数是返回整型数据的函数,调用点又在函数类型说明之前,编译程序就会对调用生成错误代码。为了防止上述问题的出现,必须使用一个特别的说明语句,通知编译程序这个函数返回什么值。下例示出了这种方法。

第一个函数的类型说明sum()函数返回浮点类型的数据。这个说明使编译程序能够对sum()的调用产生正确代码。函数类型说明语句的一般形式是:type_specifier function_name(;)即使函数使用形参,也不要将其写入说明句。若未使用类型说明语句,函数返回的数据类型可能与调用者所要求的不一致,其結果是难以预料的。如果两者同处于一个文件中,编译程序可以发现该错误并停止编译。如果不在同一个文件中,编译程序无法发现这种错误。类型检查仅在编译中进行,链接和运行时均不检查。因此,必须十分细心以确保绝不发生上述错误。当被说明为整型的函数返回字符时,这个字符值被转换为整数。因为C语言以不加说明的方式进行字符型与整型之间的数据转换,因而多数情况下,返回字符值的函数并不是说明为返回字符值,而是由函数的这种字符型向整型的缺省类型转换隐含实现的。

二、返回语句

返回语句return有两个重要用途。第一,它使得内含它的那个函数立即退出,也就是使程序返回到调用语句处继续进行。第二,它可以用来回送一个数值。本章将说明这两个用途。

(一)从函数返回函数可以用两种方法停止运行并返回到调用程序

第一种是在执行完函数的最后一个语句之后,从概念上讲,是遇到了函数的结束符“}”(当然这个花括号实际上并不会出现在目标码中,但我们可以这样理解)。例如,下面的函数在屏幕上显示一个字符串。

一旦字串显示完毕,函数就没事可做了,这时它返回到被调用处。在实际情况中,没有多少函数是以这种缺省方式终止运行的。因为有时必须送回一个值,大多数函数用return语句终止运行,有时在函数中设立了多个终止点以简化函数、提高效率。切记,一个函数可以有多个返回语句。如下所示,函数在s1、s2相等时返回1,不相等时返回-1。

(二)返回值所有的函数

除了空值类型外,都返回一个数值。该数值由返回语句确定。无返回语句时,返回值是0。这就意味着,只要函数没有被说明为空值,它就可以用在任何有效的C语言表达式中作为操作数。这样下面的表达式都是合法的C语言表达式。x=power(y);if(max(x,y)>100)printf(“greater;”)for(ch=getchar();isdigit(ch);)...;可是,函数不能作为赋值对象,下列语句是错误的:swap(x,y)=100;C编译程序将认为这个语句是错误的,而且对含有这种错误语句的程序不予编译。所有非空值的函数都会返回一个值。我们编写的程序中大部分函数属于三种类型。第一种类型是简单计算型-函数设计成对变量进行运算,并且返回计算值。计算型函数实际上是一个“纯”函数,例如sqr()和sin()。第二类函数处理信息,并且返回一个值,仅以此表示处理的成功或失败。例如write(),用于向磁盘文件写信息。如果写操作成功了,write()返回写入的字节数,当函数返回-1时,标志写操作失败。最后一类函数没有明确的返回值。实际上这类函数是严格的过程型函数,不产生值。如果读者用的是符合ANSI建议标准的C编译程序,那么所有这一类函数应当被说明为空值类型。奇怪的是,那些并不产生令人感兴趣的结果的函数却无论如何也要返回某些东西。例如printf( )返回被写字符的个数。然而,很难找出一个真正检查这个返回值的程序。因此,虽然除了空值函数以外的所有函数都返回一个值,我们却不必非得去使用这个返回值。有关函数返回值的一个常见问题是:既然这个值是被返回的,我是不是必须把它赋给某个变量?回答是:不必。如果没有用它赋值,那它就被丢弃了。请看下面的程序,它使用了mul( )函数。mul( )函数定义为:int mul(int x, int y){......}

c语言主要知识点总结 篇9

◆知识点1:交换两个变量值的方法

1)采用第三方变量(最容易想到的方法)

2)采用加减法进行值得交换(面试时常用**)

代码如下:

b = a - b;a = a - b;b = a + b;

3)采用按位异或的位方式

代码如下:

a = a^b;b = a^b; a = a^b;

◆知识点2:取余运算%的结果与被除的符号相同,结果为两个正数取余后前面加符号

◆知识点3:sizeof的使用

sizeof是一种运算符不要想当然理解为函数

sizeof使用时可以不加

sizeof可以加变量、常量、数据类型

跟数据类型是必须加()

◆知识点4:#include编译预处理命令与多文件团队开发

include编译预处理命令可以认为是:将后面的文件内容拷贝到当前的文件中

多文件团队开发:模块分别编译成.o都不能链接成功,合起来链接生成最终程序。

链接:把项目中所有相关联的.o目标文件、C语言函数库合并在一起,生成可执行文件

——函数的定义放.c文件,函数的声明放.h文件

——如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件

——h文件的.作用:被别人拷贝。编译链接的时候不需要管.h文件

◆知识点5:数组的几种初始化方式如下:

int a[3] = {10, 9, 6};int a[3] = {10,9};int a[] = {11, 7, 6};int a[4] = {[1]=11,[0] = 7};(知道有此种初始化方式即可)

◆知识点6:数组的内存分析和注意点

存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)【注:对于以后学习重要】

数组名的作用,查看元素地址

注意数组不要越界

◆知识点7:字符串知识点

“123”其实是由’1’、’2’、’3’、’�’组成

字符串的输出”%s”,’�’是不会输出的

◆知识点8 : 字符串处理函数:strlen()

计算的是字符数,不是字数

计算的字符不包括’�’,一个汉字相当于3个字符

例子:”哈haha“ 字符数为7

从某个地址开始的数字符个数,知道遇到’�’为止

指针部分在C语言中占据重要地位,所以重点学习与整理了指针的知识:

◆知识点9:指针定义的格式

变量类型 *变量名

如:Int *p

◆知识点10:指针作用

能够根据一个地址值,访问对应的存储空间

例:

Int *p;Int a = 90;P = &a;*p = 10;//把10赋值给p所指的存储空间

◆知识点11:指针使用注意

Int *p只能指向int类型的数据

指针变量只能存储地址

指针变量未经初始化不要拿来间接访问其他存储空间

◆知识点12:指针与数组

遍历数组

int ages[5] = {10, 4, 9, 44, 99};for(int i = 0; i<5; i++){   printf(”%d“, ages[i]);}

使用指针遍历数组:

int *p;// 指针变量P指向了数组的首地址p = &ages[0];// 使用指针遍历数组for(int i =  0; i<5; I++){   printf(”ages[%d] = %d“, i, *(p + i));}

注:指针+ 1取决于指针的类型

注:数组的访问方式

数组名[下标]

指针变量名[下标]

*(p + i)

◆知识点13:指针与字符串

定义字符串的两种方式:

1、利用数组

Char name[] = “Andyzhao”

特点:字符串里的字符可以修改

适用场合:字符串内容需要经常修改

2、利用指针

Char *name = “itcast”

特点:字符串是一个常量,字符串里面的字符不能修改

使用场合:字符串的内容不需要修改,而这个字符串经常使用

◆知识点14:预处理指令(三种):

宏定义

条件编译

文件包含

1、宏定义的配对使用和带参数的宏:

#define  ...  #undef

带参数的宏:

#define sum(v1,v2) ((v1) + (v2))//括号是必须的

例如:

#define pingfang(a) a*a  #define pingfang(a) (a*a)

调用时

pingfang(10)/pingfang(2)//不正确  pingfang(5+5)//不正确  带参数的宏效率比函数高

2、条件编译(一般是判断宏的值)

#if 条件  ...  #elif 条件  ...  #else  ...  #endif(非常重要)不然后面的代码全部无效

3、文件包含:

表示系统自带的文件,”“表示自定义文件

不允许循环包含,比如a.h包含b.h,b.h又包含a.h

◆知识点14:typedef 只是给类型起了个别名并不是定义新类型

struct Student{        int age;        char *name;  };  typedef struct Student Student;  等价于typedef struct Student{        int age;        char *name;  }Student;  也等价于typedef struct {        int age;        char *name;  }Student;

类似的给枚举类型起名

typedef enum Sex  {      Man,Women  }Sex;

下面这种情况的写法比较特殊

//下面是函数指针类型的自定义数据类型,返回值类型和参数类型要匹配

#includetypedef int (*TypeFuncPointer)(int, int);  int add(int a, intb)  {   return a + b;  }  int minus(int a, intb)  {      return a - b;  }  int main()  {   TypeFuncPointer p = add;//使用自定义类型   TypeFuncPointer p2 = minus;//使用自定义类型   printf(”add = %d“,p(1, 2));   printf(”minus = %d“,p2(1, 2));   return 0;  }

下面是定义结构体的指针类型

typedef struct Student{      int age;      char *name;  }*PtrStu;  //使用方式  Student stu ={18, ”zhangsan“};  PtrStu p = &stu;

宏定义也是可以为类型起名的

#define Integer int  相当于typedef int Integer

注意和typedef的区别

例如:

typedef char * String  #define String2char *

◆知识点15:static和 extern区别是能否进行跨文件访问

①.函数

②.变量

1、对函数的作用:

外部函数:定义的函数能被本文件和其他文件访问

内部函数:定义的函数只能被本文件访问

默认情况下,所有函数都是外部函数(相当于带关键字extern),所以可以省略

extern作用:

完整的定义和引用一个外部函数都加extern

引用时也是默认是外部函数所以也省略extern

static作用:定义一个内部函数

使用:static返回类型函数名(参数列表)

不能被其他文件调用

一个项目中,本文件的外部函数名不能和其他文件的外部函数同名(error)

本文件中的内部函数(static)可以和其他文件的函数名同名的

2、对变量的作用:

全局变量分为两种:

外部变量:定义的变量可以被其他文件访问

①.默认情况下所有的全局变量都是外部变量

②.不同文件中的同名外部变量都代表同一个

③.定义一个外部变量不加extern,声明才加extern

同样的声明是没有错误的

内部变量:定义的变量不能被其他文件访问

不同文件的同名内部变量互不影响

上一篇:新形势下生物化学实验教学改革初探下一篇:园区机制体制的创新