- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2讲 二维数组和指针
第2讲 二维数组与指针;复习:一维数组元素及其地址表示;复习:指向一维数组元素的指针;复习:指向一维数组元素的指针;#include stdio.h
#define N 6
void main( )
{ int a[N]={ 1, 3, 4, 6, 7, 9 };
int temp, m=(N-1)/2;
int *p , *q , *t ;
p=a; q=a+N-1; t=a+m;
for( ; p=t; p++, q-- )
{ temp=*p; *p=*q; *q=temp; }
for( p=a; pa+N; p++ )
printf(“%3d”, *p );
printf(“\n”);
};二维数组的地址;a[0][0];二维数组的地址;;a+1与a[0]+1是不同的:a+1是序号为1的行的首地址,指向序号为1的行(相当于排长走到序号为1班的第一个战士位置);而a[0]+1是指向0行1列元素(相当于序号为0班的第1个战士)。
a、a[0]的值虽然相同,但是由于指针的类型不同(相当于排长和班长面对的对象一样,但意义不同),a是指向一维数组,a[0]指向a[0][0]元素,因此,进行加1运算,得到的结果是不一样的。
二维数组a是指向行的。在指向行的指针前面加一个*,就转换为指向列的指针。反之,在指向列的指针前面加一个,就转换为指向行的指针。;例如:a和a+1是指向行的指针
*a和*(a+1)是指向列的指针,分别指向a数组0行0列
的元素和1行0列的元素;小结:二维数组的地址分为行地址和列地址;指向二维数组的指针变量;指向二维数组元素的指针;2026;指向二维数组元素的指针;指向二维数组的指针变量;;#include stdio.h
void inv1( int x[ ] , int n )
{ int temp, i , j , m=(n-1)/2;
for( i=0; i=m; i++)
{ j=n-1-i ; temp=x[i] ;
x[i]=x[j]; x[j]=temp ; }
}
void main( )
{ int i , a[6]={ 1, 3, 4, 6, 7, 9 };
inv1(a , 6 );
for( i=0; i6; i++ )
printf(“%3d”, a[i] );
printf(“\n”);
};例:②实参用数组名,形参用指针变量
#include stdio.h
void inv2(int *x , int n)
{ int temp, m=(n-1)/2;
int *p , *i , *j ;
i=x ; j=x+n-1; p=x+m;
for( ; i=p ; i++, j-- )
{ temp=*i; *i=*j; *j=temp; }
}
void main( )
{ int i , a[6]={ 1, 3, 4, 6, 7, 9 };
inv2(a , 6 );
for( i=0; i6; i++ )
printf(“%3d”, a[i] );
printf(“\n”);
};用指向数组的指针作函数参数;#include stdio.h
void main( )
{ void average(float *p, int n);
void search(float (*p)[4], int n);
float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};
average(*score , 12);
search(score , 2);
};问题1、*a和a的值是否一样?为什么?;问题2 、为什么不能用二级指针**p指向二维数组a[2][4]?而必须用指向一维数组的指针(*p)[4]指向呢?;注意:
上面定义的指针变量p所指的对象是有4个整形元素组成的数组,即p是指向一维数组的指针。
p的值就是该一维数组的起始地址(p=a[0]),p不能指向一维数组中的某个元素。
p+1就指向下一个一维数组了(p+1=a[1]) 。
若要用指针p表示标号为2行3列的数组元素,则结果为*(*(p+2)+3) 。;指向一维数组的指针
您可能关注的文档
最近下载
- 药店医保人员管理制度范本(精选20篇).pdf VIP
- DB50T 1742-2024 家政服务 整理收纳服务规范.docx VIP
- 一种盐酸帕罗西汀片剂及其制备方法.pdf VIP
- 建筑学名词2014年版(建筑学名词审定委员会审定).pdf
- 北京市北京师范大学附属中学2024-2025学年八年级上学期期中考试物理试卷(word版,含答案).docx VIP
- 关注孕产妇心理健康.pptx VIP
- 天气闪卡_幼儿英语学习闪卡.pdf VIP
- 2021年国开电大《计算机绘图》(终结性考试)大作业(内附CAD打不开仅参考试题).pdf VIP
- 文法S→MH H→LSo εK→dML εL→eHfM→K bLM 求非.ppt VIP
- (新)(演练脚本)应急预案桌面推演方案(模板和现场案例).docx VIP
原创力文档


文档评论(0)