[山东大学]C语言课程第十一讲

合集下载

c++基础语法课介绍

c++基础语法课介绍

《C++基础语法课》介绍C++是一门面向对象编程语言,它既可以用来编写系统软件,也可以用来编写应用软件。

随着近些年来的不断发展,C++已经成为了最受欢迎的编程语言之一。

在这个课程中,我们将学习C++的基础语法。

第一部分:基础知识在C++中,变量是存储数据的基本单位,我们首先需要了解如何定义变量以及如何为变量赋值。

在C++中,变量声明和初始化是可以同时进行的,这样我们就可以在声明变量的同时为其赋值。

此外,C++支持多种数据类型,如整型、浮点型、字符型等。

我们将学习如何根据需要选择合适的数据类型。

除了变量,我们还需要了解程序的基本结构和控制语句。

在C++中,程序的基本结构是由函数和类组成的。

函数是程序的基本模块,它们可以被单独编译和调用。

类则是C++的核心,它是实现面向对象编程的基础。

在这个部分,我们将学习如何定义函数和类。

第二部分:基本运算在C++中,运算符是完成各种运算的符号。

我们将学习基本的算术运算符、关系运算符和逻辑运算符,以及如何使用这些运算符完成简单的数学计算。

此外,C++还支持位运算和指针运算,这些运算符可以帮助我们更高效地处理二进制数据和内存地址。

第三部分:控制语句控制语句是程序中控制程序执行流程的语句。

在C++中,有三种基本的控制语句:条件语句、循环语句和开关语句。

条件语句可以根据条件的成立与否控制程序的执行流程;循环语句可以让程序重复执行某段代码;开关语句则可以根据条件的成立与否改变程序的执行流程。

在这个部分,我们将学习如何使用这三种控制语句来实现程序的功能。

第四部分:函数函数是程序的基本模块,它们可以被单独编译和调用。

在C++中,函数可以分为内联函数、全局函数和成员函数。

内联函数可以被直接嵌入到代码中,全局函数可以被所有程序单元调用,成员函数则只能被类的内部函数调用。

我们将学习如何定义和调用这三种类型的函数。

第五部分:数组和字符串数组是一组相同类型的数据的集合,而字符串则是一系列字符的集合。

C语言程序设计(第三版)谭浩强著 各章习题答疑

C语言程序设计(第三版)谭浩强著 各章习题答疑

以八、 /* 以八、十六进制输出 */
} ???? 是对应的带符号短整数。 输出结果是八进制整数 十六进制整数
2
3.9 计算某个表达式的值。 通用程序清单如下: stdio.h” #include ”stdio.h stdio.h void main() { ?????? x; 计算表达式值存入x x=( 表达式 );/* 计算表达式值存入x */ printf(”% printf( %?\n”,x); ,x); } ?????? 表达式对应的数据类型符(需事先判断) ? 表达式为整型,则为d 表达式为实型,则为f 3
第七章习题答疑(二)
折半查找法在排序数组中查找某个数。 上课时已有提示。 7.13 字符串连接(b[]中字符串连接到a[]中字符串后) 设:a[10]=”12 ,b[]=”abc 12”, abc” 12 abc (1)找到a串的’\0’的下标(i=2) ’ (2)j=0; 当型循环(b[j]!=’\0’) ’\ ’ a[i]=b[j],i++,j++ (3)a[i]=’\0’ \ 7.15 字符串复制(b[]中字符串复制到a[]中) 设:a[10]=”12”,b[]=”abc” (1)i=0; 当型循环(b[i]!=’\0’) a[i]=b[i],i++ (2)a[i]=’\0’ 7.9
18
第十章习题答疑(一)
输入3个整数,按照由小到大顺序输出。 int x,y,z,*px=&x,*py=&y,*pz=&x; 用以前的程序,其中的x、y、z换成*px、*py、*pz 10.3 输入10个整数存入一维数组a[10],将其中最小数与第1 个数交换,最大数与最后一个数交换。 要求编3个函数: 10 10 输入10个整数、交换、输出交换后的10个整数。 输入函数: void in(int *p,int n) 输出函数: void out(int *p,int n) 交换函数: void change(int *p,int n) 其中寻找最大最小数的方法: int *q,*max,*min; for (max=min=p,q=p+1;q<p+n;q++) { if(*max<*q) max=q; if(*min>*q) min=q; } 19 交换的方法:*p和*min,*(p+n-1)和*max 10.1

C语言教学探究

C语言教学探究
C语言课程特点 和相关练 习题 。学生可 以通过计算机访 问网站 中每次课讲 的内 C语 言课程 有 自身的特 点,有优势 也有弊 端,对 学生学 容 ,在编写程序 时遇到 问题可以先通过网站查找相关 资料先 自 习有好 处也有 需要注 意的地方 。 ( 一 )教 学位置特 殊 。无论 己解决 问题。这种方式便于学生整理学习笔记 ,培养学生解决 还可 以在网站上布置课后作业和收取学生的作业 , 是职业 院校 和本 科高校 。C语言 一般都是 学生接触 的第 一 门 问题 的能力 。 高级计算机语言课程。学生初次接触 , 难 免感觉放不 开手脚 , 便于教师的作业批改 。在网络教学方面还可 以采用局域网 内的 感觉 学习起来抽 象 ,不 易于理解 。但是把 C 语 言作 为第一 门 网络教学管理软件进行教学与指导,例如极域教学软件 。这种 高级语 言计 算机课 程也是有 它 的道理 的。C语言 是一种 结构 教学软件可以在教师机上给学生做 同步演示与讲课,在学生做 化程序 设计语言 ,虽然和现在 流行的面 向对 象 的可视化 设计 练 习时可 以把 学生做练 习的过程用广播 形式在局域 网内演 示 语言相 比,应用度偏低 。但是作为计算机底层编程 以及教 学, 给其他学生看,这样增加了互动效果、方便对学生的练习进 行 ( 二)校企合作,接近 岗位需。为了使学生学 习到的知 能够起 到规范性 的作用 ,利于 学生 以后学 习其 他计算机 语言 讲解 。 并起 到事半功倍 的作用 。 ( 二 )教学资源 结构化 匮乏。教学 识与社会接轨 ,可 以创建校企 结合 的课程建设方法。听取企业 资源如 果说 匮乏 是并不客 观的,因为 C语 言的教材和 教辅 , 家对 C 语 言程序设计教学改革 的意见、由企业向学校提供实验 在 多年 的教学 中, 已经有 多种 版本,多种练 习册 的出现 。种 条件 、以企业作为学生的校外实习基地或者企业为学生提供 就 类也相对 较多 。但是 这些教材 大多数质量 不高,互相 借鉴 的 业 岗位,通过这些方法使学生 熟悉公司内的编程环境 ,尽快进 内容过 多。主要 以教材、和练 习册 为主 。典型 的编程例 题如 入工作状态。学校还可以邀请企业家为学生开讲座 ,派遣青年 水仙花 数、斐邦拉 契数列 ,矩 阵变换等循环 出现 。所 以有新 教师到企业去实习,使教学的内容与企业 的实际更为贴近。学 意 的教材 ,教辅 。适合职 业院校使 用,偏重实 用性 的教 学资 校作为企业 的人才培育基地 ,发挥技术和设备的优势 ,为企业 源匮乏 ,形成 了资源 不少 ,但互相 参考价值低 的结构性 资源 提供支持,向企业输送合格毕业生,校企结合实现双赢。 ( 三) 匮乏现 象。 ( 三 )教学 方法需要灵 活扩充 。教 学方法 ,在 传 教学方法 多样化 ,采用任务式 、模块式 设计。传统的教学过 于 统 的讲授 和实验 室操作编程 的基础上 ,应 该注 重创 新,不断 注重语句 、语法等细节的教学 ,对学生分析 问题 、解决问题 的 改革 。因为职业 院校 偏重于应 用,过多 的理 论知识 ,不 应在 能力训练不够 ,很多学生在课程结束后 ,依然很难独立编写程 课堂 中占过大 的时间额度 。要让 学生先掌握 实用性 ,在 以后 序。任ห้องสมุดไป่ตู้驱动教学始终把学生作为学习的主体,以任务作为驱 需要 的时候,可 以 自学扩充理论 知识。在教学 方法 的扩 充 中 动 ,让学生通过 自己的操作 ,把书上死 的理论变成活的应用 , 可 以尝试任 务法 、项 目法 、模块法 等同时注重 多媒体设 备的 教师的引导 、点拨更多的是把知识加 以引申,使学生能够触类 旁通,点面结合、 以点带面 、以l f 7 1 带新 。在教学过程中,引入 采用 。 日常生活工程实践的实例 ,并 由此培养学生分析 、解决生活和 二 、c语言教学 内容 的解析举例 ( 一)进制 介绍 与转换 。c语言 中,一些 教师 由于进 制 工程 问题 的能力,提 高学生的学习兴趣 ,使学生 由专业基础课 i l  ̄t J 地过渡到计算机专业课的学 习,打下坚实的编程基 转换不容 易理解 ,常 常采 取越过 的方式。但是 这对学生 是不 的学习J 利 的。教学 时注 重应用 没有错 。但是进 制在学 生的后继课程 础和编程方法 。 中往 往经常用到 。这里的忽视,会造 成后继课程课时的增加 , 参 考 文献 : 任务加重 。实际进制数 并不难于理 解。只是在进 制转换 的公 [ 1 1 ] 宫业 芹 . C语言程序 设计 网上教 学 系统的设计 与 实现 式中,计算计较 繁琐 ,造 成学生掉 队。所 以在授课 中应讲授 [ D】 . 山 东大学 , 2 0 1 2 . 『 2 1 范晓峰 . P B L模 式在 高职 《 C语 言程序设 计 》课程 中 进 制知识 。在进 制转换 中简单介绍 公式法 ,同时介绍实 际应 . 内蒙古师 范大学 , 2 0 1 0 . 用 中的进制转换算法 。 ( 二)I F语句 的嵌套 。这是学生学 习 的 实践研 究 】 f 3 1 戈崇胤 . C语 言程序 设计 学 习支持 系统的设计 和开发 编程 时候 的第一个难点,在 I F语句嵌套 中,找不到 匹配 点, 自己写不 明 白,别人 写的编码看不懂 。这时候要 抓住 匹配 原 f D1 . 华 东师范大学 , 2 0 0 6 . 『 4 ] 王丽霞 . 高职 《 c + +语 言程序设计 》实验课教 学设计 则,同时加 大对 应程序练 习 。以练代 讲,讲练 合一 。 ( 三) D ] . 山东师 范大学 , 2 0 0 6 . 循 环 语句 为 重 点。循环 语 句 的编程 赢 灵活 掌 握 ,尤其 侧 重 与 实践 『

C语言程序设计(2014年清华大学出版社出版的图书)

C语言程序设计(2014年清华大学出版社出版的图书)
韩婷婷,女,硕士,鲁东大学信息与电气工程学院副软件工程系讲师。主要研究领域为模型驱动的软件工程, 软件测试,软件维护,形式化方法。
谢谢观看
C语言程序设计(2014年清华大学出 版社出版的图书)
2014年清华大学出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
《C语言程序设计》是2014年清华大学出版社出版的图书,作者是宋丽华、雷鹏、张小峰、韩婷婷。 该书是普通高等教育“十一五”国家级规划教材、计算机系列教材。该教材可作为计算机类、电气信息类的 本科教材,也可作为科技工作者业务学习的参考用书。 该教材共分9章,以程序设计思想为中心,强化算法思想和规范化编程。
雷鹏,男,工学硕士,毕业于山东大学计算机软件与理论专业,鲁东大学信息与电气工程学院副教授。研究 方向为计算机算法设计与分析、Led照明最优化、伽马辐照装置放射源棒最优化排列、软件工程、程序设计。
张小峰,男,工学博士,鲁东大学信息与电气工程学院副教授。主要从事数字图像处理、模式识别等方面的 研究工作。先后为本科生讲授《离散数学》《信息论与编码》《算法分析与设计》等课程。
2014年6月1日,该教材由清华大学出版社出版。
内容简介
第1章C语言入门:介绍简单的C程序组成、C程序的运行环境,算法的特性以及描述算法的方法,结构化程序 设计思想。
第2章数据类型和表达式:介绍C语言的基本数据类型,数据的表示,常量和变量,运算符和表达式,以及表 达式的计算过程。
第3章C语言的基本控制结构:介绍了C语言的三种基本结构,包括C语句的种类、数据的输入与输出、选择结 构和循环结构,并通过程序实例分析了选择和循环结构的构造过程。
成书过程

C语言程序设计(姜学峰版)PPT课件第十一章

C语言程序设计(姜学峰版)PPT课件第十一章

8
5)定义结构体类型仅仅声明了一种数据结构,编译 系统不会为类型分配存储空间的;此时可用已定 义的结构体类型去定义结构体变量或数组,编译 系统将为结构体变量分配存储空间;
9
2. 定义结构体类型的变量 有三种方法: 1)先定义结构体类型,再用类型标识去定义变量 struct student stu1, stu2; struct student是已定义的结构体类型标识符; stu1、stu2是所定义的结构体变量;编译时将为 结构体变量分配各自的存储空间; 2)定义类型的同时定义变量 struct student { …; …; } stu1, stu2;
18
5. 结构体变量的指针、结构体成员的指针 注:&优先级为2级,低于.和[ ]; stu1 变量stu1的指针:&stu1 图示: num
num成员指针:&stu1. num
4
20 1
name第i个元素指针:&stu1. name[i]
name sex m

birthday d 最低级成员y的指针:&stu1.birthday.y y score
5
例:定义可表示学生基本情况的结构体类型。
项目: 学号 姓名 性别 出生日期 成绩 电话号码 数据: 010510 Li Feng M 1981.5.4 680 029-8482500
类型: 长整/字串 字串
字符
字串
整型
字串
struct student /*结构体类型标识*/ { long num; char name[20]; char sex; char birthday[12]; float score; char tel[15]; };

山东大学网络教育学院C语言程序设计模拟题A答案

山东大学网络教育学院C语言程序设计模拟题A答案

《C语言程序设计》模拟卷A卷一、选择题:1.一个C语言的源程序中____A__。

A)必须有一个主函数 B)可以有多个主函数C)必须有主函数和其他函数 D)可以没有主函数2.执行以下语句的结果为____C__。

y=10; x=y++;A)x=10, y=10 B)x=11, y=11C)x=10, y=11 D)x=11, y=103.执行以下程序段后,c3的值是__A____。

int c1=1,c2=2,c3;c3=c1/c2;A) 0 B) 1/2 C) D) 14.C语言中字符型(char)数据在内存中的形式存储是____D__。

A) 原码 B) 补码 C)反码 D) ASCII码5.下列常数中不能作为C的常量的是____D__。

A) 0xA5 B) -2 C) 3e2 D)6.C语言中整数-8在内存中的存储形式是___B___。

A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 01117.已知 int i,a;执行语句"i=(a=2*3,a*5),a+6;"后,变量i的值是___B___。

A)6 B)12 C)30 D)368.执行以下程序段后,a,b,c的值分别是______。

int a,b=100,c,x=10,y=9;a=(--x==y++)?--x:++y;if(x<9)b=x++; c=y;A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,109.一个C语言程序的基本组成单位是______C。

A)主程序 B)子程序 C)函数 D)过程10.已知函数abc的定义为:void abc ( ){ ....... }则函数定义中void的含义是___A_。

A)执行函数abc后,函数没有返回值B)执行函数abc后,函数不再返回C)执行函数abc后,可以返回任意类型D)以上三个答案全是错误的11.以下程序的输出结果是___C_。

第6章C语言

第6章C语言

float
*point;
定义了一个指向浮点型数据的指针变量point,即point是一个 用于存放浮点型变量地址的变量。
6.1.2 指针变量的定义与初始化
在此定义中,基类型声明了该指针变量所指向的 实体的类型。如:一个指向float类型的指针变量,它 的基类型应该为float型;一个指向int类型的指针变 量,它的基类型应该为int型。“*”是一个标识,用 以说明该变量是一个具有指针类型的变量。对于指针 变量的变量名的命名也应该尽量做到“见名知义”。 需要注意的是,指针变量名为“point”,而非 “*point”。
第6章
指针
山东大学电气工程学院
第6章Байду номын сангаас指针

指针是C语言中一个非常重要的概念,它对于变量的引用、数组 的处理、字符串的操作、函数参数的调用及函数间数据的处理、 结构体的应用和文件的操作等等都起着相当重要的作用。正确的 运用指针不仅可以提高程序的执行效率,简化操作过程,而且可 以处理复杂的数据操作,实现动态的数据结构,完成形式多样的 参数传递以及灵活的修改形参与实参的数值。但是需要警惕的是, 因为指针的运用如此的灵活,以至于经常会出现一些意想不到的 错误和结果。甚至在某些情况下,错误的运用指针,会使程序受 到非常严重的破坏。因此可以说,正确的理解和运用指针是衡量 能否成功的编写高质量C程序的标准。
6.1.3 与指针有关的运算符
在C语言中有三个与指针有关的运算符: 1、“&”运算符 此运算符称为取地址运算符。通过取地址运算符“&”可以获得 一个变量的地址。“&”为单目运算符,运算方向为从右向左结合, 直接作用于一个变量前,表示该变量的地址。 例如: int x=10,*p1;

C语言 习题十一 参考答案

C语言 习题十一 参考答案

3.已有一个存放数千种仓库物质信息的文件 CK,每个信息元素含两个内容:物质编号 kno 和库存量 KNOM。请编程通过检查全库物质的库存量,建立一个新的文件 XK,它包含所有库存量大于 100 的物质 的编号和库存量。 参考程序: /*p360_3.c*/ #include "stdio.h" main() {int n,m;
{scanf("%d%s",&n,xm); for(j=0;j<5;j++) scanf("%d",&sc[i][j]); }
fp=fopen("abc.txt","w"); for(i=0;i<N;i++)
fprintf(fp,"%5d%s%4d%4d%4d%4d%4d\n",n,xm,sc[i][0],sc[i][1],sc[i][2],sc[i][3],sc[i][4]); fclose(fp); } /*p360_1a.c*/ #include "stdio.h" main() {FILE *fp; int num,mark[5],i,sum,n=0; float av,t[5]={0}; char name[20]; if((fp=fopen("abd.txt","w"))==NULL)
FILE *fp1,*fp2; fp1=fopen("ck.txt","r"); fp2=fopen("xk.txt","w"); while(feof(fp1)==0) {fscanf(fp1,"%d,%d",&n,&m);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
言的一个标志。 指针也是C语言中最为困难的一部分,在学习中除了要正确 理解基本概念,还必须要多编程,上机调试。
C程序设计第十一讲
第十章 指 针
10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 地址指针的基本概念 变量的指针和指向变量的指针变量 数组指针和指向数组的指针变量 字符串的指针指向字符串的针指变量 函数指针变量 指针型函数 指针数组和指向指针的指针 有关指针的数据类型和指针运算的小结
printf("\na=%d, b=%d\n\n", a,b);
printf("max=%d, min=%d\n", *p1,*p2); p1 a a
&a
p2
5
b
p
&b
p2பைடு நூலகம்
5
b
&b
9
&a
9
C程序设计第十一讲
说 明:
10.2 指针变量
指针变量可以赋予0值,p=0表明p是空指针,它不指向任何变量。 在头文件"stdio.h"中有: #define NULL 0
C程序设计第十一讲
10.1 地址指针的基本概念
C程序设计第十一讲
10.1 地址指针的基本概念 总结:
指针、变量的指针和指针变量(重点)
指针:就是 “内存单元的地址”。指针指向一个内存单元。
变量的指针:就是“变量的地址”。变量的指针指向一个变量对应 的内存单元。 指针变量:就是地址变量。地址(指针)也是数据,可以保存在一 个变量中。保存地址(指针)数据的变量称为指针变量。 指针变量p中的值是一个地址值,可以说指针变量p指向这个地址。 如果这个地址是一个变量i的地址,则称指针变量p指向变量i。 指针变量p指向的地址也可能仅仅是一个内存地址。
(2) 给变量赋值为 i=5; j=6; k=9;
址编号
2000 2002 2004
。 。 。 5 6 9 。 。 。 2000
变量i 变量j 变量k
(3) 通常,在程序中通过变量名 对变量 进行存取。 •其实程序经过编译后已将变量名转 换为变量的地址,对变量值的存取都 是通过变量的地址进行的。
3010
C程序设计第十一讲
10.1 地址指针的基本概念
指针的概念
我们也称 为指针
C程序设计第十一讲
指针的概念
数据在内存中的存储、读取过程
例如:整型变量 i , j , k ; 在编译时为变量分配内存,内存示意 图如图所示. 内存地
内存中用户数据区
(1) 假设变量 i,j,k 被分配的 内存地址分别为2000,2002, 2004
以下两个语句作用相同:
i=5;
*P=5;
C程序设计第十一讲
指针变量的定义
定义形式: 基类型 *指针变量名;
*pointer2;
举例
说明
int i , j ; int *pointer1,
(1)指针变量名前的*,表示该变量是指针型的变量。 指针变量名为pointer1,而非 *pointer1。 (2)定义指针变量时必须指明基类型。
C程序设计第十一讲
10.2 指针变量
1.变量的指针
变量的地址称为变量的指针。
2. 指针变量
存储变量地址的变量称为指针变量,用来指向另一个变量。
3. * 操作符
为了表示指针变量与它所指向的变量的之间的关系,在程序中 用 * 符号表示“指向”。
例如,P代表指针变量,* P则表示P所指向的变量。 P 2000 *P 5 2000 i
的变量的地址赋值给指针变量
将某个已经初始化过的基类型相同的指针变量赋值给指 针变量
使用malloc函数或calloc函数
C程序设计第十一讲
注 意:
10.2 指针变量
指针变量同普通变量一样,使用之前不仅要定义说明,而且 必须赋予具体的值。未经赋值的指针变量不能使用,否则将造
成系统混乱,甚至死机。
指针变量的赋值只能赋予地址,不能赋予任何其它数据,否 则将引起错误。 (1) 指针变量初始化的方法: (2) 赋值语句的方法: int a, *p;
变量 p
C程序设计第十一讲
访问变量的两种方式:
(1) 直接访问方式
按变量地址存取变量值的方式。
如果读取变量 i的值,直接到为变量i分配的存储单元(2000、2001 字节)中取出i的值(5)即可。
(2) 间接访问方式
先将变量 i 的地址存放在另一个变量p中,如果读取变量 i的值, 先找到变量p,从p中取出内容(2000,即变量i的起始地址),然后到 2000、2001字节中取出i的值(5)。 即通过变量p访问为变量i分配的内存单元。
在C程序中常使用 int *p=NULL; 让指针变量p为空指针。
对指针变量赋0值和不赋值是不同的。指针变量未赋值时,可以
是任意值,是不能使用的。否则将造成意外错误。
而指针变量赋0值后,则可以使用,只是它不指向具体的变量而 已。
a
pa
a
&a
pb
1
b
&b
pb
1
b
&b
初始化
2
&b
2
执行pa=pb;
C程序设计第十一讲
例如: void main() *pa=*pb;
10.2 指针变量
{ int a=1,b=2,*pa=&a,*pb=&b; printf("a=%d\nb=%d\n*pa=%d\n*pb=%d\n",a,b,*pa,*pb); } pa
int a;
int *p=&a;
p=&a;
C程序设计第十一讲
例如: void main() pa=pb; }
10.2 指针变量
若改为*pa=*pb; 有何不同?
{ int a=1,b=2,*pa=&a,*pb=&b;
printf("a=%d\nb=%d\n*pa=%d\n*pb=%d\n",a,b,*pa,*pb); pa
a
pa
a
&a
pb
1
b
&a
pb
2
b
&b
初始化
2
&b
2
执行*pa=*pb;
C程序设计第十一讲
10.2 指针变量
例如:输入a、b两个整数,按先大后小的顺序输出。 void main() { int a,b,*p,*p1=&a,*p2=&b;
scanf("%d%d",p1,p2); if(a<b) { p1 p=p1; p1=p2; p2=p;} }
C程序设计第十一讲
指针变量的运算
&*p与*&a &和*运算符的优先级相同,结合方向为自右向左 &*p等价于&(*p)和&a,即变量a的地址 *&a等价于*(&a)和*p,即变量a *p++与*++p *与++运算符的优先级相同,结合方向为自右向左 *p++ 相当于 *(p++),即先取p所指向变量的值,然后, 让p指向下一个存储单元。 *++p 相当于 *(++p) 即先让p指向下一个存储单元,然 后再取p所指向变量的值。
C程序设计第十一讲
10.1 地址指针的基本概念
地址的概念
程序是由CPU控制和运行的,在执行过程中需要处理各种数据,这些 数据被存放在内存中。 为了便于管理,内存空间被划分成若干个大小相同(1个字节)的存 储单元,里面存放着各种数据。 内存中每一个存储单元也有一个编号,这个编号被称为地址。通过地 址就可以十分方便地访问指定的存储单元 。 变量的地址是存储它的第1个单元的编号。 常把变量的地址称为指针。 地址:内存单元的编号,通常一个字节一个编号。 指针:内存单元的地址。
C程序设计第十一讲 表示将数值3送到变量i中,可有两种表达方法:
(1)将3送到变量i所标志的单元中。即直接访问方式 (2)将3送到变量p所指向的单元(变量i)中。 即间接访问方式 直接访问示意图
i
5 2000 p i
5 2000
间接访问示意图
2000
注意:我们并不关心变量p的存储地址, 对 变量p的访问属于直接访问。
C程序设计第十一讲
10.2 指针变量
p++与++p( p--与--p )
++操作在这里并不是使变量的值加1,而是要根据指针变 量的基类型来确定。
C程序设计第十一讲
指针变量的初始化
一个指针变量在定义后,不能直接使用。因为系统分配给该 指针变量的存储空间中内容(某块存储空间的地址)是不可 预料的,即指针变量所指向的存储空间是不可预料的。 初始化指针变量的方法 将某个已经定义过的、数据类型与指针变量基类型相同
C程序设计第十一讲
引用指针变量
例 通过指针变量间接访问另一个变量。
#include <stdio.h> void main() {int a,b,*p1,*p2;
a=5;
b=8;
p1=&a; p2=&b; printf("a=%d,b=%d\n",*p1,*p2);
*p1=*p1+*p2;
printf("a+b=%d\n",*p1); }
例如
i=3; pointer1=&i; printf("%d",*pointer1);
(1)上例将打印出i的值。
相关文档
最新文档