C指针编程之道.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C指针编程之道

第一章: 指针变量的值就是地址。 指针变量定义的一般形式: 类型说明符 * 变量名 类型说明符:表示该指针变量指向的变量的数据类型,且该指针变量只能只想该数据类型 的变量。(特型) 使用指针变量时必须进行的操作,即是给指针变量赋值,让其指向指定的内存单元。 指针变量在使用前,必须要让其指向某个具体的变量,即指向某个具体的内存单元才能正确引用。 1.2.3小结: 指针是一种数据类型,专门存放地址的数据类型。俗称的指针式指地址。指针式常量,然而指针变量时变量(指针变量既是 *pStu)。指针变量使用前必须指向具体有效的内存单元。 地址运算符 是一元运算符只能去内存中变量的地址。 取值运算符* 是一元运算符能获取指针所指向的变量的值。 指针变量在使用前不仅要先定义还要先赋值。(既是使用前要初始化) 指针变量在赋值时只能赋兼容类型的值。 指针做整数加法操作时如:pNum++ (是int型)实际是地址改变了2*n个单位 例如原始地址为 2A01做了++操作后变为2A03 (在这里int型为2字节)。 Ps:在做指针整形操作时,要注意是否超出了数组的大小。(减法也是一样) 指针与指针的减法: 必须要指向同一个数组。结果为两个元素之间的元素个数。 如果pNew指向Num[0],pOld指向Num[3]。 那么pOld - pNew = 2 因为他们之间的元素个数为Num[1],和Num[2]。 实际就是两个指针指向的地址之间的减法。 : 数组是构造类型;但是数组元素属于基本类型,也有指针。 指针变量指向数组元素: pStr = str[6]; 指针变量指向数组: pStr = str ;(str已经定义为数组) 输出定义的数组: printf(str : %s \n , str); (由于str是一个字符串 ,则会输出整句)。 %p是输出内存地址。 数组名是常量,指针变量时变量。 下标法必须通过额外的变量来充当编号,用于访问每一个元素,指针只要知道数组的首地址就可以访问所有的元素。 数组较大时,用指针法访问比较方便。 编译器在编译数组时,是按数组首地址加上各元素的偏移量的方式找到相应元素,再进行编译,既是指针法的方式。(高效性体现,数组越大,优越性越明显) 指针数组定义的一般形式:(由指针变量组成的数组) 类型说明符 *数组名[数组长度] 类型说明符:表示指针值所指向的变量的类型 *数组名: 表示这是指针数组 如:int *num[3]; 定义为这是一个指针数组 , 每个数组元素都是一个指针变量 ,该指针变量指向int 类型的数据。 可以表明 name[0] --- china name[1] ---beijing name[2] ---longmai 指针数组较多的用来访问字符串。 字符串指针变量指向字符串的首地址; 可以移动字符串指针变量。 : 函数是为了完成没想特定功能而编写的程序块。 函数参数可以分为两种:1.传递的是变量的数值,称为普通参数 2.传递的是变量的地址,称为指针参数 在函数中形参的变换不会让实参也发生变化。 因为在函数调用时,给形参分配了独立的内存空间,实参把值传递给形参,实际只是copy其内存地址的内容去到形参的内存地址。所以形参交换不会影响实参。 (形参与实参虽然是同样的值,但是存储在不同的内存地址) 所以要完成函数调用时并进行实参的交换就要用到指针。 在函数调用时把指针作为函数参数,既是传递变量的地址。 在被调函数中,通过指针操作相应的变量就是直接操作本身。(改变形参就是改变实参) 如: 定义Swapdata( char *p_dat_x , char *p_dat_y) 定义char *p_x , *p_y; 定义char x,y; 有 p_x = x ; p_y = y; Swapdata(p_x , p_y) 在函数swapdata中的操作既是对于 x,y的直接操作。 0x表示16进制 设定结构体时,如 Struct { Char head; Char len; Char add; Char data[3]; Char chk; }RF_FRAME; 定义RF_FRAME *ptr_tmp; 且定义了结构 RF_FRAME txbuf = {}; Ptr_tmp = txbuf ; 则指针ptr_tmp指向结构txbuf的首地址。 小结: 指针变量作为实参时,实际是让形参同时指向实参指

文档评论(0)

80019pp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档