版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计指针的使用CONTENTS01指针变量的定义目录02指针变量的使用什么是指针?指针变量的定义指针变量的定义0x804a1200x804a0200x804a02010一个变量的地址称为该变量的“指针”。如果有一个变量专门用来存放其他变量的地址(指针),这个变量被称为“指针变量”。例如:intx=10;int*p;p=&x;指针变量的定义指针和指针变量是两个完全不同的概念,指针是一个地址,而指针变量是存放地址(指针)的变量。指针与指针变量的区别指针变量在使用前首先需要定义,定义指针变量的语法格式如下所示:int*p;指针变量只能接受其他变量的地址作为其值。获取变量地址的语法格式如下所示:&x;
基类型*变量名;
&变量名;指针变量的定义指针变量的定义定义指针变量的方式有两种,具体如下:第1种定义指针变量的同时对其赋值inta;int*p=&a;第2种先定义指针变量,再对其赋值int*p;inta;p=&a;指针变量的引用所谓引用指针变量指向的变量,就是根据指针变量中存放的地址,访问该地址对应的变量。访问指针变量指向变量的方式非常简单,只需在指针变量前加一个“*”(取值运算符)即可,访问指针变量的语法格式如下所示:intnum=100;int*p=#printf(“num=%d\n”,num);printf(“*p=%d\n”,*p);指针变量的引用【样例1】从键盘上输入整数到变量a,b,再定义两个指针变量p1,p2,指向这两个变量a,b。输出a、b的地址,并用指针输出变量a、b。#include<stdio.h>intmain(){inta,b;printf("请输入两个整数\n");printf("a=");scanf("%d",&a);printf("b=");scanf("%d",&b);int*p1,*p2;p1=&a;p2=&b;printf("变量a的地址是%d\n",p1);printf("变量b的地址是%d\n",p2);printf("用指针的方式输出变量值a=%d,b=%d\n",*p1,*p2);return0;}C语言程序设计指针应用:编写函数实现两个整数的交换目录
CONTENTS实验:编写函数实
现两个整数的交换地址及其内容0102地址及其内容−一个整数变量a
的值为56
,则,计算机在内存中为该变量分配一个单元空间存放该变量的值。如下图所示:计算机为该变量分配一个单元为
0X804a020的空间,在该单元中存放该变量值56。地址及其内容−一个变量的地址称为该变量的
“指针”。
如果有一个变量专门用来存放其他变量的地址(指针),这个变量被称为“指针变量”。int
a;a=56;int*p;//p为指针变量p=&a//p的值为a变量的地址样例分析1主程序子程序swap子程序返回时调用前调用时样例分析2主程序调用时p=地址a
q=地址b子程序swap子程序返回时调用前【样例】编写函数实现两个整数的交换【参考代码】实验:编写函数实现两个整数的交换C语言程序设计指针与数组CONTENTS01指针与数组02利用指针变量获取数组中的元素目录指针与数组在C语言中,一维数组名是数组的指针,指向数组首元素。例如:inta[5];则系统分配5个连续的空间如右图所示数组名a就是首个元素的地址。int*p;p=a;//表示指针变量p的值为数组的首个元素地址int*p;p=a;//该语句等同于p=&a[0];指针与数组指针指向数组初始化的方式为:指针变量名=数组名;例如:定义时初始化:
inta[5],*p=a;
定义后初始化:
inta[5],*p;p=a; //此处不能写为p=&a上述两种形式等价。指针与数组指针与一维数组的关系inta[5]={1,2,3,4,5},*p;p=a; //等价于使用首元素地址初始化指针p=&a[0];利用指针变量获取数组中的元素分析程序:利用指针变量获取数组中的元素说明:a和p是有差别的,数组名a是一个指针常量,不可赋值,不能进行“a++”操作;p是一个指针变量,可赋值,可以进行“p++”操作。
inta[5]={1,2,3,4,5},*p;p=a; //等价于使用首元素地址初始化指针p=&a[0];利用指针变量获取数组中的元素分析程序:移动指针访问数组元素。C语言程序设计带参数的main()函数CONTENTS01带参数的main()函数02main函数的参数使用目录带参数的main()函数Main()函数
main()函数是程序的入口。通常,main()函数都是无参的,但,该函数也可以接收参数。main()函数的完整定义方式如下图所示。这个参数的传递来源于命令行。带参数的main()函数Main()函数参数说明main函数的参数使用【样例1】编写程序,输出命令行中所有参数参考代码:main函数的参数使用【样例2】编写程序sayto.c要求:命令行中输入saytowang时,输出结果如下main函数的参数使用【样例2】编写程序sayto.c要求:命令行中输入saytowang时,输出结果如下程序代码如下:C语言程序设计内存申请和操作CONTENTS01内存申请函数02内存操作函数目录内存申请函数为了实现动态管理内存空间,程序员有时需要自己向系统申请内存空间,C语言提供malloc()函数、calloc()函数和realloc()函数实现内存申请。内存申请函数calloc()函数void*calloc(unsignedintcount,unsignedintsize);
向系统申请个数为count,每个字节为size的内存空间,返回所分配内存的首地址。该函数将内存空间初始化为数据0内存申请函数calloc()函数样例void*calloc(unsignedintcount,unsignedintsize);内存申请函数malloc()函数void*malloc(unsignedintsize);
malloc()函数与calloc()函数类似,用于向内存申请指定字节的空间,与calloc()函数不同的是:malloc()函数并未对所申请的空间初始化。内存申请函数realloc()函数
realloc()函数的功能比malloc函数和calloc函数的功能更为丰富,可以实现内存分配和内存释放的功能,其函数声明如下所示。void*realloc(void*memory,unsignedintnewSize);内存操作函数内存回收:free()函数
在堆区上分配的内存在程序结束以后,系统不会将其自动释放,需要程序员自己管理。C语言提供了free()函数来释放内存,其函数声明如下所示。voidfree(void*memory);内存操作函数memset()函数
memset()函数用于对指定的内存空间进行初始化操作,其函数声明如下所示。void*memset(void*memory,intval,unsignedintsize);内存操作函数memset()函数编程时,可利用malloc()与memset()函数,实现分配与初始化void*memset(void*memory,intval,unsignedintsize);内存操作函数memcpy()函数
memcpy()函数用于将一块内存空间的内容复制到另一块内存空间中void*memcpy(void*dst,constvoid*src,unsignedintsize);内存操作函数memmove()函数
memmove()函数的功能和memcpy()函数的功能类似,但它可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届安徽省高三下学期高考历史冲刺模拟(一)历史试题(含答案)
- 2025年江苏省徐州市初二地生会考考试试题及答案
- 2025年陕西省安康市八年级地生会考考试题库(含答案)
- 2026一年级上册语文学习之星颁奖课件
- 2026服装制造业市场动态分析及投资机会评估报告
- 2026服务器冷却系统行业市场现状产销分析及投资评估规划分析研究报告
- 2026明代航海技术地理发现郑和下西洋及经济发展探讨报告
- 2026教育行业虚拟桌面即服务远程教学适配性评估与发展建议报告
- 2026教育类社区运营研究及用户分层与活跃度提升分析报告
- 2026教育信息化建设投入分析及智慧校园解决方案与标杆案例研究
- 医院织物洗涤管理体系
- 烫伤事故应急预案演练方案
- 输电线路基础知识培训
- 2025年荆州市城市发展控股集团有限公司招聘笔试参考题库附带答案详解
- 2025年高考物理试题及答案
- 铁道机车车辆课件:货车车体
- 社工专业综合评价个人陈述范文
- 心理测评培训课件
- GB/T 8492-2024一般用途耐热钢及合金铸件
- 中介效应检验方法课件
- 1.1时代为我搭舞台(课件)-【中职专用】中职思想政治《心理健康与职业生涯》(高教版2023·基础模块)
评论
0/150
提交评论