C语言程序设计(八)-指针及宏定义.pptx

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

; 主要内容; 8.1地址和指针的概念;1.按变量名存取变量值的方式称为“直接访问”方式 short i, j; short k = i + j; printf(“%d”, k);;2. 另一种存取变量值的方式称为“间接访问”的方式。即,将变量i的地址存放在另一个变量j中,通过j访问i。;一个变量的地址称为该变量的“指针”。 例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。;8.2 定义一个指针变量;在定义指针变量时要注意两点:;8.2.2 指针变量的使用 ;8.2.2 指针变量的引用 ;8.2.3 对“&”和“*”运算符说明: 取地址运算符。a是变量a的地址 * 指针(间接)运算符, *p代表指针变量p指向的变量; (2) 如果 pointer_2 =&* pointer_1 ;(3) *&a的含义是什么? *a = * (a) 先进行&a运算,得a的地址,再进行*运算。*&a和*pointer_1的作用是一样的,它们都等价于变量a。即*&a与a等价。;8.3 指针变量作为函数参数;8.3 指针变量作为函数参数;;例8.3 输入a、b、c 3个整数,按大小顺序输出。;8.3 数组与指针 ; 8.3.1 指针的实质与指针运算; 8.3.1 指针的实质与指针运算; 8.3.1 指针的实质与指针运算; 8.3.2 指针与数组的关系;例8.4 输出数组中的全部元素。 ;(2) 通过数组名计算数组元素地址,找出元素的值。 #include stdio.h void main() { int a[10];   int i;   for(i=0;i<10;i++ )    scanf(″%d″,a[i]);   printf(″\n″);   for(i=0;i<10;i++)    printf(″%d″,*(a+i));   };(3) 用指针变量指向数组元素。 #include stdio.h void main() { int a[10];   int *p,i;   for(i=0;i<10;i++)     scanf(″%d″,&a[i]);   printf(″\n″);   for(p=a;p<(a+10);p++)    printf(″%d ″,*p); };8.3.3 用数组名作函数参数;例8.5 将数组a中n个整数按相反顺序存放。;#include stdio.h void inv(int ???[ ],int n); void main() { int i, a[10]= {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};  inv(a, 10); //输出 };解惑:数组作为参数时,实参到形参的“值”传递,传递的是什么?;例8.6 用选择法对10个整数按由大到小顺序排序。 ;拓展:指针和数组关系的用法;8.3.3 一维数组与指针总结 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;表 示 形 式;10.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;例10.11 用指针变量输出二维数组元素的值 ; (2) 指向由m个元素组成的一维数组的指针变量;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;8.3.4 多维数组与指针 ;提示:指针数组的使用;10.3.4 多维数组与指针 ;8.3.5. 用指向数组的指针作函数参数;8.3.5. 用指向数组的指针作函数参数;void average(float *p,int n); void search(float (*p)[4],int n); void main() {float score [3] [4]={{65,67,70,60},{80, 87,90,81},{90,99,100,98}}; average(*score,12);/*求12个分数的平均分*/ search(score,2); /*求序号为2的学生的成绩*/ };void average(float *p,int n) { float*p_end; float sum=0,aver;

文档评论(0)

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

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

1亿VIP精品文档

相关文档