欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言之指针.ppt

    • 资源ID:67248679       资源大小:266.50KB        全文页数:30页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言之指针.ppt

    Version 3.0指针指针第八章第八章回顾回顾数组的存储机制数组的存储机制数组的定义和使用数组的定义和使用数组的初始化数组的初始化二维和多维数组二维和多维数组2 2目标目标理解指针的意义理解指针的意义掌握指针变量和指针运算符的使用掌握指针变量和指针运算符的使用掌握指针与数组的关系掌握指针与数组的关系掌握内存分配掌握内存分配3 3什么是指针?什么是指针?指针是一个变量,它包含另一个变量的内存指针是一个变量,它包含另一个变量的内存地址地址使用指针可以间接访问数据项的值使用指针可以间接访问数据项的值指针可以指向基本数据类型的变量(如指针可以指向基本数据类型的变量(如 int、char和和double等)等)或者数组或者数组4 4指针可以用来做什么?指针可以用来做什么?从函数中返回多个值从函数中返回多个值从一个函数向另一个函数传递数组和字符串从一个函数向另一个函数传递数组和字符串通过移动指针操作数组通过移动指针操作数组分配内存并对其进行访问分配内存并对其进行访问5 5指针变量指针变量指针声明包括类型和变量名,变量名的前指针声明包括类型和变量名,变量名的前面有一个面有一个*type*name;例如:例如:int*var2;var26 6指针运算符指针运算符&是一元运算符,它返回操作数的内存地址是一元运算符,它返回操作数的内存地址var2=&var1;*是是&的反运算符,它也是一元运算符,返的反运算符,它也是一元运算符,返回指针指向的内存位置中的值回指针指向的内存位置中的值temp=*var2;7 7给指针赋值给指针赋值 2-1通过通过&运算符为指针赋值运算符为指针赋值ptr_var=&var;通过另一个指向相同类型数据项的指针变通过另一个指向相同类型数据项的指针变量对指针进行赋值量对指针进行赋值ptr_var2=ptr_var;8 8给指针赋值给指针赋值 2-2通过指针为变量赋值通过指针为变量赋值*ptr_var=10;如果如果ptr_var指向指向var,则把,则把10赋给赋给var9 9指针运算指针运算 2-1只能进行加法和减法运算只能进行加法和减法运算int var,*ptr_var;ptr_var=&var;ptr_var+;假定假定var存储在地址存储在地址1000中,因为整数的长度中,因为整数的长度是是 2 个字节,个字节,ptr_var的值将是的值将是10021010指针运算指针运算 2-2指针递增时,将指向其类型的下一个元素指针递增时,将指向其类型的下一个元素的内存位置,反之亦然的内存位置,反之亦然操作操作意义意义+ptr_var或或ptr_var+指向指向 var 后面的下一个整数后面的下一个整数-ptr_var或或ptr_var-指向指向 var 前面的整数前面的整数ptr_var+i指向指向 var 后面的第后面的第 i 个整数个整数ptr_var-i指向指向 var 前面的第前面的第 i 个整数个整数+(*ptr_var)或或(*ptr_var)+将将 var 的值加的值加 1*(ptr_var+)取出取出 var 后面的下一个整数的后面的下一个整数的值值1111指针比较指针比较前提:两个指针都指向相同类型的变量前提:两个指针都指向相同类型的变量假设假设ptr_a和和ptr_b分别指向分别指向a和和b操作操作意义意义ptr_a ptr_b如果如果a存储在存储在b的前面则返回的前面则返回trueptr_a=ptr_b如果如果a存储在存储在b的前面,或两个指针指向同一的前面,或两个指针指向同一位置则返回位置则返回trueptr_a=ptr_b如果两个指针指向同一位置则返回如果两个指针指向同一位置则返回trueptr_a!=ptr_b如果两个指针指向不同位置则返回如果两个指针指向不同位置则返回trueptr_a=NULL如果如果ptr_a是空值则返回是空值则返回true1212指针与一维数组指针与一维数组 3-1数组元素的地址可以用两种方式表示数组元素的地址可以用两种方式表示在数组元素前面加“&”符号&ary2数组名+下标ary+21313指针与一维数组指针与一维数组 3-2#include void main()static int ary10=1,2,3,4,5,6,7,8,9,10;int i;for(i=0;i 10;i+)printf(ni=%d,aryi=%d,*(ary+i)=%d,i,aryi,*(ary+i);printf(&aryi=%X,ary+i=%X,&aryi,ary+i);值值地址地址1414指针与一维数组指针与一维数组 3-3演示:演示:执行程序,观察并分析输出结果执行程序,观察并分析输出结果1515指针与多维数组指针与多维数组 二维数组可以定义为一个指向一组连续的二维数组可以定义为一个指向一组连续的一维数组的指针一维数组的指针data_type (*ptr_var)expr;1616指针与字符串指针与字符串 2-1#include#include void main()char a,str81,*ptr;printf(nEnter a sentence:);gets(str);printf(nEnter character to search for:);a=getche();ptr=strchr(str,a);/*return pointer to char*/printf(nString starts at address:%u,str);printf(nFirst occurrence of the character is at:%u,ptr);printf(“nPosition of first occurrence is:%d”,ptr-str);指针运算指针运算1717指针与字符串指针与字符串 2-2演示:演示:执行程序,观察并分析输出结果执行程序,观察并分析输出结果1818分配内存分配内存 2-1malloc()是最常用的函数之一是最常用的函数之一它允许从空闲内存池中分配内存它允许从空闲内存池中分配内存malloc()的参数是代表所需字节数的整数的参数是代表所需字节数的整数1919分配内存分配内存 2-2#include#include void main()int*p,n,i,j,temp;printf(n Enter number of elements in the array:);scanf(%d,&n);p=(int*)malloc(n*sizeof(int);for(i=0;in;+i)printf(n Enter element no.%d:,i+1);scanf(%d,p+i);for(i=0;in-1;+i)for(j=i+1;j*(p+j)temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;for(i=0;in;+i)printf(%dn,*(p+i);分配内存分配内存排序排序2020free()函数函数 3-1使用使用 free()函数释放不再需要的内存函数释放不再需要的内存void free(void*ptr);ptr 必须是通过必须是通过malloc()、calloc()或或realloc()分配分配的指针的指针2121free()函数函数 3-2#include#include int main()int number;int*ptr;int i;printf(How many ints?);scanf(%d,&number);ptr=(int*)malloc(number*sizeof(int);if(ptr!=NULL)for(i=0;i0;i-)printf(%dn,*(ptr+(i-1);free(ptr);return 0;else printf(nMemory allocation failed.n);return 1;定义定义分配分配判断判断释放释放2222free()函数函数 3-3演示:演示:执行程序,观察并分析输出结果执行程序,观察并分析输出结果2323calloc()函数函数 3-1calloc()与与malloc()类似类似主要的区别是存储在已分配的内存空间中主要的区别是存储在已分配的内存空间中的值默认为零的值默认为零calloc()需要两个参数需要两个参数要分配内存的变量的个数每个变量的大小void*calloc(size_t num,size_t size);2424calloc()函数函数 3-2#include#include int main()float*calloc1,*calloc2;int i;calloc1=(float*)calloc(3,sizeof(float);calloc2=(float*)calloc(3,sizeof(float);if(calloc1!=NULL&calloc2!=NULL)for(i=0;i3;i+)printf(ncalloc1%d holds%05.5f,i,calloc1i);printf(ncalloc2%d holds%05.5f,i,*(calloc2+i);free(calloc1);free(calloc2);return 0;else printf(Not enough memory n);return 1;定义定义分配分配判断判断释放释放2525calloc()函数函数 3-3演示:演示:执行程序,观察并分析输出结果执行程序,观察并分析输出结果2626realloc()函数函数 3-1为已经分配的内存重新分配空间并复制内容为已经分配的内存重新分配空间并复制内容 realloc()函数有两个参数函数有两个参数 已分配的内存地址 重新分配的字节数void*realloc(void*ptr,size_t size);2727realloc()函数函数 3-2#include#include int main()int*ptr;int i;ptr=(int*)calloc(5,sizeof(int*);if(ptr!=NULL)*ptr=1;*(ptr+1)=2;ptr2=4;ptr3=8;ptr4=16;ptr=(int*)realloc(ptr,7*sizeof(int);if(ptr!=NULL)ptr5=32;ptr6=64;for(i=0;i7;i+)printf(“ptr%d:%dn,i,ptri);realloc(ptr,0);/*free(ptr);*/return 0;定义定义分配分配判断判断释放释放再分配再分配2828realloc()函数函数 3-3演示:演示:执行程序,观察并分析输出结果执行程序,观察并分析输出结果2929总结总结如何使用指针变量和指针运算符如何使用指针变量和指针运算符指针赋值指针赋值指针运算指针运算指针比较指针比较指针与数组指针与数组内存分配内存分配3030

    注意事项

    本文(C语言之指针.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开