《C语言程序设计》课件-项目8:指针_第1页
《C语言程序设计》课件-项目8:指针_第2页
《C语言程序设计》课件-项目8:指针_第3页
《C语言程序设计》课件-项目8:指针_第4页
《C语言程序设计》课件-项目8:指针_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论