- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                c语言程序设计第六章 指针
                    第六章 指针 6.1  指针的概念 6.2  指针变量的定义和引用 6.3  指针与数组 6.4  指针与函数 6.5  多级指针 6.1 指针的概念 指针是C语言的重要特色,正确的应用指针,可以: 使程序简洁、紧凑、高效; 有效地表达复杂的数据结构; 动态分配内存,直接处理物理内存地址; 得到多于一个的函数返回值。 变量与地址 变量是对程序中数据存储空间的抽象 变量的地址是其存储单元的首字节地址 指针与指针变量 指针:变量的地址 指针变量:专门用来存放变量地址的变量 与*运算符 (取地址运算):取变量的地址 设i是变量,则i为i的地址。 *(取内容运算):取指针所指向的目标变量 设i_pointer是指向变量i的指针变量,则*i_pointer 为i。 两者互为逆运算,即以下表达式是等价的:     i_pointer ? i    *i_pointer ? i    i_pointer ? (*i_pointer)    i ? *(i) 与*运算示例 设变量i, j和指针变量p1, p2在内存的位置和内容如下图,则和*的运算结果为: 访问变量的方式 对变量的访问是指对变量的取值或赋值操作。可采用两种方式: 直接访问:通过变量名直接访问。 间接访问:通过指向该变量的指针来访问,如通过i_pointer访问i。  直接访问与间接访问 6.2 指针变量的定义和引用 指针变量的定义 指针变量的初始化 指针变量的引用 指针运算 指针变量的定义 定义形式:        类型说明符   *   指针变量名;     例: int  *ip, i;   /* 定义ip为整型指针变量,i为整型变量*/ char * name;     /* 定义name为char型指针变量*/ float  *fp1;             /* 定义fp1为float型指针变量*/ 指针变量的初始化 一般形式: 数据类型  *指针变量名=初始地址值;  空指针与野指针 空指针:其值为0(用NULL表示)的指针。如: int  *p=0; 或 int *p=NULL; 野指针:未初始化的指针,其值不确定。 空指针不指向任何目标,野指针指向不确定的目标。 比较:       int  i;                  int  *p1=i;              /*p1指向变量i*/        float  *p2;                  /*p2的指向不确定*/        char  *p3=NULL;    /*p3不指向任何目标*/ 指针变量的引用 通过引用指针变量,可以间接访问目标变量。修改指针,则访问目标也改变。 例:     int i, j;     int *p;     i=0; j=i;            /* 直接访问i , j */     p = i;             /* p指向i */     *p = 100;          /* 间接访问i */     p = j;             /* p指向j */     *p = 200;          /* 间接访问j */ 指针变量应用举例 例6-1 #includestdio.h void main() { 	int var; 	int *p; 	var = 10;  	p = var;       /*必须先对p 赋值,才能引用*/     printf(var=%x, p=%x\n, var, p);     printf(var=%d, *p=%d\n, var, *p); 	*p=100; 	printf(var=%d,*p=%d\n, var, *p); } 指针应用举例 例6-2:输入两个数,按由大到小的顺序输出。 void main() {int *p1, *p2, *p, a, b;  scanf(%d,%d, a, b);  p1=a;  p2=b;  if(ab)    {p=p1; p1=p2; p2=p;}  printf(a=%d,b=%d\n,a,b);  printf(max=%d,min=%d\n,*p1,*p2); }      输入:5, 9   运行结果:a=5,b=9                                                    max=9,min=5 指针的算术运算 指针与整数的加减运算:  p+n:p指向的当前位置之后n个数据单位的位置。 p-n: p指向的当前位置之前n个数据单位的位置。 如:float x, *p=x;          p=p+5;       /*p向后移动5*4个字节*/          p=p-2;
                
原创力文档
                        
                                    

文档评论(0)