C语言指针课程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可以间接通过物理地址来访问,如下图 int a,b,*p,*q; a=12;b=18; p=a;q=b int a,b,*pa,*pb; float *pf; a=12;b=18; p=a;q=b; 辨别: “*”号意义 算术运算符中,*号表示乘号。 指针定义中,*号表示指针标示符 表达式语句中,表示指针运算符 指针与函数 函数返回地址值 如何定义? struct 结构体名 *指针变量名; 例如: struct zhigong { int name[10]; float jxgz; } zg; sturct zhigong *p=zg; 如何引用?p-jxgz或者(*p).jxgz 了解指针与数组 对二维数组 int a[3][4],有 a-----二维数组的首地址,即第0行的首地址 a+i-----第i行的首地址 a[i] ? *(a+i)------第i行第0列的元素地址 a[i]+j ? *(a+i)+j ----- 第i行第j列的元素地址 *(a[i]+j) ? *(*(a+i)+j) ? a[i][j] 【案例7-3】用指针表示法输出二维数组的首地址,各行首地址及各个元素的值。 二维数组的指针作函数参数 用指向变量的指针变量 用指向一维数组的指针变量 用二维数组名 数组元素指针做函数参数 【案例7-5】将数组a中的n个整数按相反顺序存放于原数组中。要求用函数实现逆序。 代码 4.指针形式的字符串操作 【案例7-6】通过指针赋值字符串。 代码 #include stdio.h #include string.h main( ) { char *from=computer; char ch[10],*to=ch; /*此处定义字符数组和字符指针*/ printf(string_from=%s\n,from); for(;*from!=\0;from++,to++) /*将from指向的字符串复制到to指向的数组ch中*/ *to=*from; *to=\0; /*字符串结尾加\0*/ to=ch; /*指针重新指向第一个元素*/ printf(\nstring_to=%s\n,to); } 5.指针数组 指针数组的定义格式为: 类型标识符 *数组名[数组元素个数]; 【案例7-7】将若干字符串按字母顺序(由小到大)输出。 〖分析〗用指针数组中的元素分别指向各个字符串。对字符串排序时,只需改动指针数组中各元素的指向。 代码 #include stdio.h #include string.h void sort(char *stuname[],int n); /*声明排序函数*/ void print(char *stuname[]); /*声明输出函数*/ main( ) { static char *stuname[]={Zhangsan,Lisi,Wangwu,Zhaoliu,NULL}; int n=4; /*字符串个数*/ sort(stuname,n); /*调用函数对字符串排序*/ print(stuname); /*调用函数输出字符串*/ } void sort(char *stuname[],int n) /*用冒泡法对字符串排序*/ { char *temp; int i,j; for(i=0;in-1;i++) for(j=i+1;jn;j++) { if(strcmp(stuname[i],stuname[j])0) { temp=stuname[i]; stuname[i]=stuname[j]; stuname[j]=temp; } } } void print(char *stuname[]) { int i=0; while(stuname[i]!=NULL) { printf(%s\n,stuname[i]); i++; } } p 2000 2002 2004 2018 …... a a+1 a+2 a+9 …… …... a[0] a[1] a[2] a[9] 2000 指向一维数组的指针变量 如果将数组的起始地址赋给某个指针变量,那么该指针变量就是指向一维数组的指针变量,称为数组指针。 如:int a[10], p = a; p p+1 p+2 p+9 …… *a *(a+1) *(a+2) *(a+9) …… *p *(p+1) *(p+2) *(p+9) …… p[0] p[1] p[2] p[9] …… 地址 元素 int a[10], k,*p=a; for (k = 0; k 10; k+

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档