《C语言》课程PPT_第8章_指针课件

上传人:我*** 文档编号:142213842 上传时间:2020-08-17 格式:PPT 页数:30 大小:100.50KB
返回 下载 相关 举报
《C语言》课程PPT_第8章_指针课件_第1页
第1页 / 共30页
《C语言》课程PPT_第8章_指针课件_第2页
第2页 / 共30页
《C语言》课程PPT_第8章_指针课件_第3页
第3页 / 共30页
《C语言》课程PPT_第8章_指针课件_第4页
第4页 / 共30页
《C语言》课程PPT_第8章_指针课件_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《《C语言》课程PPT_第8章_指针课件》由会员分享,可在线阅读,更多相关《《C语言》课程PPT_第8章_指针课件(30页珍藏版)》请在金锄头文库上搜索。

1、指针,第八章,2,回顾,数组的存储机制 数组的定义和使用 数组的初始化 二维和多维数组,3,目标,理解指针的意义 掌握指针变量和指针运算符的使用 掌握指针与数组的关系 掌握内存分配,4,什么是指针?,指针是一个变量,它包含另一个变量的内存地址 使用指针可以间接访问数据项的值 指针可以指向基本数据类型的变量(如 int、char和double等) 或者数组,5,指针可以用来做什么?,从函数中返回多个值 从一个函数向另一个函数传递数组和字符串 通过移动指针操作数组 分配内存并对其进行访问,6,指针变量,指针声明包括类型和变量名,变量名的前面有一个 * type *name; 例如: int *va

2、r2;,7,指针运算符,8,给指针赋值 2-1,通过 ,9,给指针赋值 2-2,通过指针为变量赋值 *ptr_var = 10; 如果ptr_var指向var,则把10赋给var,10,指针运算 2-1,只能进行加法和减法运算 int var, *ptr_var; ptr_var = 假定var存储在地址1000中,因为整数的长度是 2 个字节,ptr_var的值将是1002,11,指针运算 2-2,指针递增时,将指向其类型的下一个元素的内存位置,反之亦然,12,指针比较,前提:两个指针都指向相同类型的变量 假设ptr_a和ptr_b分别指向a和b,13,指针与一维数组 3-1,数组元素的地址

3、可以用两种方式表示 在数组元素前面加“ int i; for (i = 0; i 10; i +) printf(ni=%d,aryi=%d,*(ary+i)=%d,i,aryi,*(ary + i); printf( ,值,地址,15,指针与一维数组 3-3,演示: 执行程序,观察并分析输出结果,16,指针与多维数组,二维数组可以定义为一个指向一组连续的一维数组的指针 data_type (*ptr_var) expr;,17,指针与字符串 2-1,#include #include void main () char a, str81, *ptr; printf(nEnter a sent

4、ence: ); 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); ,指针运算,18,指针与字符串 2-

5、2,演示: 执行程序,观察并分析输出结果,19,分配内存 2-1,malloc() 是最常用的函数之一 它允许从空闲内存池中分配内存 malloc() 的参数是代表所需字节数的整数,20,分配内存 2-2,#include #include void main() int *p,n,i,j,temp; printf(n Enter number of elements in the array: ); scanf(%d, ,分配内存,排序,21,free()函数 3-1,使用 free() 函数释放不再需要的内存 void free(void *ptr); ptr 必须是通过malloc()、

6、calloc()或realloc()分配的指针,22,free()函数 3-2,#include #include int main() int number; int *ptr; int i; printf(How many ints?); scanf(%d, ,for(i=number ; i0 ; i-) printf(%dn,*(ptr+(i-1); free(ptr); return 0; else printf(nMemory allocation failed.n); return 1; ,定义,分配,判断,释放,23,free()函数 3-3,演示: 执行程序,观察并分析输出结

7、果,24,calloc()函数 3-1,calloc()与malloc()类似 主要的区别是存储在已分配的内存空间中的值默认为零 calloc()需要两个参数 要分配内存的变量的个数 每个变量的大小 void *calloc( size_t num, size_t size );,25,calloc()函数 3-2,#include #include int main() float *calloc1, *calloc2; int i; calloc1 = (float *) calloc(3, sizeof(float); calloc2 = (float *)calloc(3, sizeo

8、f(float); if(calloc1!=NULL ,定义,分配,判断,释放,26,calloc()函数 3-3,演示: 执行程序,观察并分析输出结果,27,realloc()函数 3-1,为已经分配的内存重新分配空间并复制内容 realloc()函数有两个参数 已分配的内存地址 重新分配的字节数 void *realloc( void *ptr, size_t size );,28,realloc()函数 3-2,#include #include int main() int *ptr; int i; ptr = (int *)calloc(5, sizeof(int *); if(pt

9、r!=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; ,定义,分配,判断,释放,再分配,29,realloc()函数 3-3,演示: 执行程序,观察并分析输出结果,30,总结,如何使用指针变量和指针运算符 指针赋值 指针运算 指针比较 指针与数组 内存分配,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号