1,数据结构与算法 C语言的基础知识,,2,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,3,简单的C语言源程序,# include “stdio.h“ main( ) { printf(“ * * * * * * * * * \n“); /* “\n“表示换行 */ printf(“ * Hello ! * \n“); printf(“ * * * * * * * * * \n“); },主函数,输出函数,注释,,,4,C程序的构成,一个C语言的源程序通常由一个或若干个函数构成,函数是C程序的基本单位,这些函数可以包含在一个或者多个源文件内。 一个C程序中必须有一个main函数,它可以放在程序的任何地方。程序总是从main函数开始执行。 函数可以是系统提供的库函数,也可以是用户根据自己需要编制的自定义函数。,,5,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,6,数据类型与声明,,数据类型,,指针类型,空类型,构造类型,,,7,在程序运行过程中其值不能改变的量叫做常量。 常量分为整型常量(如果是长整型,要在数字后面加L) 、实型常量、字符型常量等。 const float PI=3.1415926 符号常量: 值在本文件内不能改变,也不能再赋值。 #define MAXSIZE 16 C语言规定标识符只能由字母打头,后面跟字母、数字或下划线,大小写不通用。(在Turbo C中标识符的长度可以超过8个字符) 一般符号常量名用大写,变量名用小写,以示区别。,常量,,8,在程序运行过程中其值可以改变的量叫做变量。 变量要先定义(即使用类型标识符作说明)再使用。 int num; char name;,变量,,9,整型数据,C语言中的整型常量可以用十进制、八进制和十六进制表示。八进制数以0开头,十六进制数以0x开头。(0为数字0) C语言中的整型变量分为基本型、短整型、长整型、无符号型。 一般短整型不大于基本型,长整型不小于基本型。,,10,字符型数据,C语言中的字符型数据有: 单字符常量 转义字符常量 字符串常量 字符变量,,11,单字符常量,单字符常量用单引号括起来 类型标识符为char,输出时用%c 表示。 按ASCII码存储,每个字符占一个字节。 给字符变量赋值时可以赋予字符的ASCII码。 例如:char a=65的结果是a变量中存放一个字母A 。 main ( ) {char a=‘a’,b=’b’,c=’c’,d=68; a=a+1;b=b+2;c=c+3;d=d+4; printf(“%c%c%c%c\n“,a,b,c,d); } 运行结果:bdfH,,12,字符串常量,字符串常量用双引号括起来 “CHINA“ √ char c; c=‘a’; × char c; c=“a“ 没有字符串变量. 用数组来存放,数组长度大于字符串长度。 char c[10]=“China“; 输入输出printf(“%s“,c); scanf(“%s“,c); 字符串处理函数: puts(c);gets(c);strcat(str1,str2);strcpy(str1,str2);,,13,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,14,算术运算符及表达式,+ 、-、*、/、% (取余) 例如:7%4 得 3 注意:float型数据不能做%运算 优先级:先*、/、 %,后+ 、- 结合性:自左至右,,15,自增和自减运算,+ +自增、 - -自减 例如:++a 、 a ++相当于 a=a+1 -- a 、 a --相当于 a=a - 1 但是:++a 是先自增再使用, a ++是先使用再自增。 注意:float型数据不能做++或- -运算。,,16,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,17,数组,数组的定义方式 一维数组的定义方式为: 类型说明符 数组名[常量表达式] int a[5]; 5个元素是:a[0]、a[1]、a[2]、a[3]、a[4] 。 二维数组的定义方式为: 类型说明符 数组名[常量表达式] [常量表达式] float a[3][2],a数组有三行两列共6个元素,分别是:a[0][0]、a[0][1]、a[1][0]、a[1][1]、a[2][0]、a[2][1];,,18,数组名的命名规则和变量名相同,下标从0开始,方括号内是元素个数。 方括号内的常量表达式的值必须是整型数,不能是变量。 当定义数组语句中不同时给变量赋值时,方括号内不得为空。 二维数组在内存中是按行存放的。 数组名代表的是该数组的起始地址. C语言允许使用多维数组。,关于数组的说明,,19,数组的赋值,在定义数组后数组中的各个变量自动取随机数。 int b[10]; b[1]=3; 将3赋给b[1],其他元素为随机数 。 可以在定义数组时对数组中的全部变量或部分变量赋值。也可以在以后的语句中为变量赋值。 int a[5]={3,4,5,6,7}; 将五个数依次赋给a数组 在定义数组时为部分变量赋值后,其他元素为0 。 int b[10]={0} int b[10]={3,2,1,0}; 将四个数依次赋给b[0]~b[3],其他元素为0 在给全部元素赋初值时,可以不用给出长度. int a[]={1,2,3,4,5},,20,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,21,指针,是C语言的一个重要概念 可以有效地表示复杂的数据结构 能动态分配内存 能方便地使用字符串 能有效而方便地使用数组 在调用函数时能得到多于一个的值 能直接处理内存地址,,22,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,23,地址的概念,程序定义了一个变量,在编译时就给这个变量分配内存单元,内存区的每一个字节有一个编号,这就是“地址“ 在程序中通过变量名来对内存单元进行存取操作 程序编译以后已经将变量名转换为变量的地址。 scanf(“%d“,,,变量i 变量j 变量k,2000 2002 2004,3010,变量i_pointer,,24,地址和指针,一个变量的地址称为该变量的指针。通过变量的地址能找到该变量在内存中的存储单元,从而得到它的值。 变量i访问方式: 直接访问:按变量地址存取变量值的方式. i=3; printf(“%d“,i); 间接访问: *表示指向,定义 i_pointer,* i_pointer * i_pointer=3; scanf(“%d“,,,25,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,26,指向变量的指针变量,存放地址的变量叫做指针变量。 在一个指针变量中只能存放同一类型变量的地址。指针变量必须先定义,指定它的类型,才能使用。 基类型 *指针变量名;例如:int *a,*b; 指向某数据的指针变量存放的是该数据的首地址,也就是说,指向的是该数据的首字节。 int占2个字节,char占1个字节,float占4个字,… 使一个指针变量指向另一个变量 指针变量名=,,27,指针变量的引用-1,在表达式中,可以使用以下两个运算符 & 取地址运算符,如:m=&a 将a的地址送入m * 指针运算符(间接访问运算符) 如:*m 就是指针变量m所指向的变量,也就是a。 因此,有了m=&a 后,就有了*m=a 。 &*m与&a相同 ,*&a与a等价 (*m)++相当于a++, *m++相当于*(m++),&a,,,a,m,*m,,28,指针,地址和指针 变量的指针和指向变量的指针变量 数组与指针,,,29,数组的指针和指向数组的指针变量,数组元素的指针是指数组元素的地址。 int a[10]; (定义a为包含10个整型数据的数组) int *p; (定义p为指向整型变量的指针变量) p=,a[0],a[9],&a[0],,p,,30,通过指针引用数组元素-1,可以通过指针为数组元素赋值。 int a[10], *p; p= p=p+1 此时,p指向数组a数组的第二个元素。*(p+1)=a[1],a[0],a[9],,p,a数组,,p+1,a+1,a[1],a[2],,p+i,a+i,,p+9,a+9,,31,通过指针引用数组元素-2,指向数组的指针变量也可以带下标。 例如:int a[10];int *p= 可以使用a[i]、p[i]、*(a+i)或*(p+i)引用数组中的第i+1个元素。 移动指针可以使用p++、p--,但注意指针不能超出数组元素的范围。 ++和*是同优先级,从右至左的结合方向。例如* p++和*(p++)等价 指针不允许进行乘除运算。,,32,主要内容,C语言简介 数据类型与声明 运算符与表达式 数组 指针 结构体,,,33,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,34,什么时候需要结构体类型?,一类用户 自定义 的 数据类型 struct struct student { int num; char name[20]; char sex; int age; float score; char addr[ 30]; };,,35,结构体变量的定义-1,struct 结构体名 {成员表列}; 类型名 成员名 先定义结构体类型再定义变量名 struct abc { int a; char b; float c; char d[30];}; 以上定义了一个结构体类型,并指定了其中各成员的名字和它们的类型。 再有: struct abc xx1,xx2,xx3;,定义了三个变量:xx1、xx2和xx3,它们都具有struct abc的类型结构。,,36,结构体变量的定义-2,在定义类型的同时定义变量,一般形式为: struct 结构体名 { 成员表列 }变量名表列; 例如:struct abc { int a; char b; float c; char d[30]; } xx1,xx2,xx3; 结果和前面一样。,,37,结构体变量的定义-3,也可以直接定义结构体变量 struct { 成员表列 }变量名表列;,,38,结构体变量的定义-4,结构体变量的成员,可以单独使用,作用与地位相当于普通变量,成员也可以是一个结构体变量 struct date { int month;int day;int year;}; struct student {int num; char name[20]; char sex; struct date birthday; /*birthday 是struct date 类型*/ } student1, student2;,,39,结构体变量占用的内存,只有在定义变量后,才为该变量分配内存单元。结构体变量所占的内存长度等于每个成员长度之和。 #include main ( ) { struct date {int year,month,day;}today; printf(“%d\n“, sizeof(struct date)); } 运行结果:12 (VC++环境下),,40,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,41,结构体变量的引用,不能对结构体变量整体进行输入输出,只能对结构体变量中的成员分别进行输入和输出。 引用结构体变量中各个成员的方式为: 结构体变量名.成员名 可以对变量的成员赋值 student1.num=99082; 如果成员又是结构体类型,则要用多个成员运算符,找到最低一级的成员。 student1.birthday.month,,42,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,43,结构体变量的初始化,可以在定义时指定初始值 #include “stdio.h“ main () { struct student {int num; char name[20]; char sex; } a={89031, “Li Lin“,'M'}; printf(“ No. %d\n name:%s\n sex:%c\n“,a.num,a.name,a.sex); },,44,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,45,结构体数组,和定义结构体变量相似,只需要说明其为数组即可 struct student { int num; char name[20]; char sex; } ; struct student stu[3]; struct student { int num; char name[20]; char sex; } stu[3];,,46,结构体数组初始化,struct student {int num; char name[20]; char sex; } stu[3]={{89031, “Li Lin“,'M'}, {89032, “Liu Ying“,'M'}, {89036, “Wang Min“,'F'}};,,47,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表,,,48,指向结构体类型数据的指针,一个结构体变量的指针就是该变量占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量。 指向结构体变量的指针 struct student { int num; char name[20]; char sex; float score; } ; struct student stu1; struct student *p; p= 为了方便,可以把(*p).num改用p-num来代替,以下三种形式等价: 结构体变量名.成员名 (*p).成员名 p-成员名,,49,结构体,什么时候需要结构体类型? 结构体类型变量的定义 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理单链表,,,50,动态申请内存,数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许定义动态数组。 实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题,用数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。,,51,C语言动态内存的函数,分配内存空间函数 malloc 调用形式: (类型说明符*) malloc(size) 功能:在内存的动态存储区中分配一块长度为“size“字节的连续区域。函数的返回值为该区域的首地址。 pc=(char *)malloc(100); 释放内存空间函数free 调用形式: free(void *ptr); free(pc);,

展开阅读全文

c语言入门自学ppt,《C语言基础知识》PPT课件.ppt相关推荐

  1. 计算机基础应用知识ppt,计算机应用基础【计算机基础知识】课件.ppt

    计算机应用基础[计算机基础知识]课件.ppt <计算机应用基础> 第一章 计算机基础知识 1.1 了解计算机 计算机应用 数值处理:科学计算 信息管理:存储信息.检索信息:资料检索.加工信 ...

  2. 计算机第一章学什么,第一章计算机基础知识学习课件.ppt

    第一章计算机基础知识学习课件.ppt 3.2.6 表单标记(FORM) 作用:定义一个表单,供后续设计向其中加入表单对象. 格式: 属性:1. action:设定处理程序的文件名. 2. method ...

  3. 计算机0基础知识,计算机基础知识0课件.ppt

    计算机基础知识0课件 第 一 篇;第一章 计算机系统概述; 1.1.2 计算机的发展; 1.1.3 计算机系统的组成; (2)计算机软件;1.3 微型计算机系统; (2)存储器; (3)输入/输出设备 ...

  4. 制作一个html文件 效果如下图,网页制作基础知识-习题课件.ppt

    网页制作基础知识-习题课件 第一章 网页制作基础知识;1.1 案例 网页制作学习园地网页;1.1案例:网页制作学习园地网页; 1.1.1 功能要求1.整个网站主要以HTML代码编写的方式完成.页面风格 ...

  5. c语言入门自学宝典,c语言学习编程宝典下载-c语言学习编程宝典appv1.2 - 起点软件园...

    c语言学习编程宝典是主打学习编程的软件,里面有海量的编程学习资源让你选择,帮助你更好的学习C语言,非常的高效,还有名师为你指导,很适合需要的小伙伴们进行学习体验. c语言学习编程宝典说明 1.将C语言 ...

  6. c语言自学文档,C语言入门自学教程傲梦.docx

    C 语言入门自学教程 C 语言是一种通用的.面向过程式的计算机程序设计语言.1972 年, 为了移植与开发UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开 发了 C 语言. C 语言是一种广泛使 ...

  7. c语言入门自学免费app,C语言入门学习最新版下载-C语言入门学习app手机版v1.0.2 安卓版-腾飞网...

    C语言入门学习app手机版是一款c语言编程自学软件,零基础也可以学习,里面有海量教学视频,针对c语言不同程度的讲解都囊括其中.随时随地学习编程都可以,不用担心自己没有基础.还支持在手机上敲代码编程哦. ...

  8. c语言入门自学手机版,c语言入门自学app下载-C语言入门学习 安卓版v1.0.2-PC6安卓网...

    C语言入门学习app是一款C语言零基础自学软件.C语言入门自学app提供海量精品学习资源,从小白入门到基础进阶都有,帮你轻松学习编程. 软件介绍 C语言入门学习app是一款专业的编程入门学习App,致 ...

  9. c语言入门自学手机版,C语言入门学习app下载-C语言入门学习app最新版下载 V1.0.2-友情手机站...

    C语言入门学习app是一款0基础自学软件,这里有着丰富C语音相关课程学习,大家在这里是可以便捷搜索查找,随时都是可以找到适合感兴趣课程学习,都是一些优质课程知识提供大家,学员在这里是可以高效学习,海恩 ...

  10. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

最新文章

  1. java多线程(三)
  2. 科大讯飞董事长:AI创业,做平台已没有机会
  3. 【干货】.NET WebApi HttpMessageHandler管道
  4. VTK:Utilities之GetClassName
  5. 什么是 constructor signature in interface
  6. px、em、rem区别介绍
  7. JS学习笔记1-JavaScript 输出
  8. 同宿舍程序员毕业五年后:有人年薪百万,有人月薪一万
  9. c语言 syn扫描,syn flooder*** (C语言)
  10. wpf之代码设置背景图片
  11. 什么是configmap资源、secret资源(实战)
  12. 赛程安排 单循环赛 matlab程序
  13. matlab转置与共轭转置
  14. 操作系统4.1.4 文件的物理结构(文件分配方式)
  15. Linux下Pulseaudio的可视化管理---pavucontrol
  16. 01-05.经典市场营销 Marketing公开课《科特勒营销管理》(一)
  17. Mysql查询当天,本周,本月所有数据记录
  18. python 制作 gif 动态图
  19. Linux——网络桥接
  20. Python记:列表和元组之序列相加

热门文章

  1. 大数据时代科研不能再两头花钱
  2. lr_save_var() 截取任意字符串长度,以参数形式输出(参数转变量)
  3. CentOS安装python包安装管理工具pip
  4. Hibernate在自由状态和持久的状态转变
  5. 寻找节点d=n的节点算法
  6. .NET(C#):觉察XML反序列化中的未知节点
  7. android使用protobuf实现网络订单管理功能
  8. phpmailer thinkphp3.2发送邮件
  9. 书籍-Java性能调优指南
  10. for语句嵌套执行顺序_Python基础教程(四):循环语句