- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言_指针应用
第7章 指 针 内容提要 指针的概念 数组的下标法引用和指针法引用 利用指针数组对各个字符串进行排序,存取等操作 带参数的main()函数 指针概述 指针的概念 一、什么是变量的地址,什么是变量的内容? 每个变量在内存中都占有一定字节数目的存储单元,C编译程序在对程序编译时,根据程序中定义的变量的类型,在内存中为其分配相应字节数目的存储空间。 变量在内存中所占存储空间的首地址,就称为该变量的地址(address). 变量在内存中所占存储单元中存放的数据,就称为变量的内容(content)。 直接寻址 间接寻址 指针变量 专门存放地址型数据的变量 运算符和*的使用 (*p1) /*该表达式的值代表的是变量a 的地址*/ *(a) /*该表达式引用的是变量a的内 容*/ 引入指针的原因 为函数提供修改变量值的手段 指针为C的动态内存分配系统提供支持 指针为动态数据结构提供支持 指针可以改善某些子程序的效率 例:任意从键盘输入两个整数,然后将交换后的数据重新输出。 #includestdio.h void swap(int x, int y); main() { int a,b; printf(“Please enter a,b:”); scanf(“%d,%d”,a,b); printf(“Before swap: a=%d,b=%d\n”,a,b); swap(a,b); printf(“After swap: a=%d,b=%d\n”,a,b); } void swap(int x,int y) {int temp; temp=x;x=y;y=temp; } 变量的指针作为函数参数 变量指针 指针变量 变量的指针就是变量的地址, 指针变量就是C语言中专门用于存放地址型数据的变量 指针变量的定义 类型关键字 *指针变量名; 例: 1) int *p1,*p2; 2) int a,b; int *p1=a,*p2=b; 指针变量的运算 1)指针变量的内容只能是地址,而不能是数据,必须用相同基类型的变量的地址对其进行赋值; 2)指针变量必须经初始化后才能使用,否则指针变量所指向的存储单元是不确定的,对其所作的赋值等操作将是很危险的。 3)由于指针的值就是地址,指针运算实质上就是对地址的运算。 指针运算只能参与赋值运算、算术运算和关系运算。其中,指针可参与的算术运算值有两种:加和减,即加、减一个整数或自增、自减运算。 分析: a = *p++; ? a = *p; p = p+1; a = (*p)++; ? a = *p; *p = *p+1; 重新解决问题 #includestdio.h void swap(int * x, int * y); main() { int a,b; printf(“Please enter a,b:”); scanf(“%d,%d”,a,b); printf(“Before swap: a=%d,b=%d\n”,a,b); swap(a,b); printf(“After swap: a=%d,b=%d\n”,a,b); } void swap(int *x,int *y) {int temp; temp=*x;*x=*y;*y=temp; } 字符指针作函数参数 字符数组与字符指针的不同 1)定义方法不同; char str[10 ]; 定义的是一个字符数组,而 char *ptr; 定义的是一个字符指针。 2)初始化含义不同; char str[10 ]={“China”}; char *ptr=”China”; 3)赋值方法和含义不同; 指针变量可以用如下方式赋值: char *ptr; ptr=”China”; /*正确*/ char str
文档评论(0)