- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指针PPT讲座;1. 内存单元地址
程序中定义了变量后,在编译时系统就给这个变量分配内存单元。内存中每一个内存单元都有一个编号,这就是“地址”。
内存单元地址 就是编译后系统分配给变量的内存空间位置。
例如: int i , j, k; ; ⑶ 数据在内存中的存取方式:直接访问方式 和 间接访问方式。
直接访问方式:按变量地址存取变量值。
间接访问方式: 把一个变量的地址放在另一个变量中。;例如,我们定义一个变量 i_pointer ,用来存放整型变量i 的地址:
i_pointer = i ; /* 把变量 i 的地址赋给变量 i_pointer */
这时i_pointer的值 就是变量 i 所占用的内存单元的起始地址(2000)。
如何存取变量i 的值?;表示将数值3送到变量中,有两种方法:
①将3 送到变量i 所标志的单元中。
②将3 送到变量i_pointer 所“指向”的单元中。
所谓“指向”就是通过地址来体现的。
(如右图所示) ; 变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。 指针变量和它所指向的变量之间,用“ * ” 表示“ 指向”。
例如 i_pointer代表指针变量,* i_pointer 是i_pointer所指向的变量。;8.2.1 定义一个指针变量;怎样使一个指针变量指向另一个变量呢? 可以使用赋值语句。
例如: float x ;
char ch ;
float * pointer_3 ;
char * pointer_4 ;
pointer_3 = x ;
pointer_4 = ch ;;8.2.2 指针变量的引用;main( )
{
int a , b;
int *pointer_1 ,*pointer_2; /*定义指针变量,指向整型变量*/
a=100;
b=10;
pointer_1=a ; /* 使pionter_1指向a */
pointer_2=b ; /* 使pionter_2指向b */
printf(%d,%d\n, a , b) ;
printf(%d,%d\n, *pointer_1 , *pointer_2) ;
}; 和 * 的优先级相同,按自右向左方向结合。因此,先执行*pointer_1 的运算,它的执行结果就是变量 a ,再执行 运算,则*pointer_1的最后结果与 a 相同, 即取变量 a 的地址。(见图示1); 先执行 a 运算,得 a 的地址,再执行 * 运算,得变量 a 的值。所以 , 表达式 *a 和表达式 *pointer_1 的含义是相同的,它们等价于变量a。
即*a 与a 等价。 ;main()
{ int a , b ,*p1 , *p2 , *p;
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);
};8.2.3 指针变量作为函数参数;例:对输入的三个整数按大小顺序输出。 ; 一个变量有地址,一个数组包含若干元素,每个元素在内存中占用存储单元,它们也应该有相应的地址。一个变量既然可以指向变量,当然也可以指向数组和数组元素。
所谓数组的指针是指 数组的起始地址。数组元素的指针是数组元素的地址 。
例如: int a[10] , i , *p, *p1;
p= a; 或 p=a[0] ;
p1=a[6] ;;8.3.1 指向数组元素的指针;假设已经定义了数组和一个指针变量
int a[10];
int *p=a;
...
*p=1;;例8.5 输出数组中全部元素 :四种方法。;例 8.6 通过指针变量输入输出数组 a 的10个元素
main( )
{
int *p , i , a[10] ;
p=a ;
for(i=0 ; i10 ; i++ )
scanf(%d, a[i] ) ;
printf(\n) ;
p=a ;
for(i=0; i10 ; i++ )
printf(%d, * p++) ;
};(1) p++(或 p+=1),使 p指向下一个元素,即
文档评论(0)