1指针的基本运算.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 指针-指针的基本运算 《C语言程序设计》 大连理工大学 * 取内容运算符(取对象运算符): *指针 运算符后面是指向某对象的指针或地址; 运算结果是其所指向的对象(内容); 对象的数据类型与指针的指向类型一致。 int a, *p, b; char c; a = 258; p=&a; a 258 p-> p &a 如何获得指针所指变量的内容? *p的数据类型(int) b=*p; //正确 *p=321; c=*p; //编译警告!!! 7C p  FF   12   00           0X0012FF7C 02 a  01   00   00     * 同名函数 用户自定义函数之间不能同名。 用户自定义函数可以与标准库函数同名,这时,链接器优先链接用户自定义函数。 #include <stdio.h> double sin(double x) //定义与库函数同名的函数, x单位为度 { int i; double t, s = 0; x *= 3.1415926 / 180; //将角度转换为弧度 for (t = x, i = 1; (t < 0 ? -t : t) > 1e-6; i++) { s += t; t *= -x * x / ((2 * i) * (2 * i + 1)); } return s; } main( ) { printf("%lf", sin(30) ); } //给定度数,求sin值 算法见《教材》P69例6-15 * 根据递推形式的数学公式,很容易写出递归函数。 求n的阶乘。 //递归形式 int fun(int n) { if (n <=1 ) return 1; return n * fun(n - 1); } main() { printf("%d", fun(3)); } //非递归形式 int fun(int n) { int i; int m = 1; for (i = 1; i <= n; i++) m *= i; return m; } main() { printf("%d", fun(3)); } * #include <stdio.h> main( ) { int a = 258, *p; p = &a; printf("%p\n", p); // 0x0012FF7C printf("%d\n", *p); //258 *p = 321; printf("%d\n", a); //321 } a的地址 #include <stdio.h> main( ) { int a = 258; printf("%d\n", *( (int *) 0x0012FF7C ) ); //258 *( (int *) 0x0012FF7C ) = 321; printf("%d\n", a); //321 } * 若 int a; int *p; p = &a; 则: &*p <=> &(*p) <=> &(a) <=> &a <=> p *&a <=> *(&a) <=> *p <=> a a p-> p == &a; *p == a; 单目运算符,优先级高于算术运算符,结合性为由右向左 互逆法则:&与*是一对互逆运算符 * 1) 指针类型 2) 指针的指向类型 3) 指针的存储位置 4) 指针的指向位置 0012FF00 08 p  0012FF01 FF   0012FF02 12   0012FF03 00   0012FF04   0012FF05   0012FF06   0012FF07   0012FF08 02 a  0012FF09 01   0012FF0A 00   0012FF0B 00   0012FF0C   int a; int * p; a = 258; p = &a; 要特别注意“指针的指向类型” ,它直接决定了指针运算的结果。 指针的四要素 * int a=258, *p; p=&a; p=(int *)1245016; //10进制 p=(int *)0X0012FF08; //16进制 0012FF0

文档评论(0)

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

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

1亿VIP精品文档

相关文档