《23指针指针与数组教学课件.ppt》由会员分享,可在线阅读,更多相关《23指针指针与数组教学课件.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1指向数组元素的指针变量例 int array10; int *p; p=&array0; / p=array;或 int *p=&array0;或 int *p=array;array0array1array2array3array9.整型指针p&array0p数组名是表示数组首地址的地址常量 指针与数组2指针变量的赋值运算p=&a; (将变量a地址p)p=array; (将数组array首地址p)p=&arrayi; (将数组元素地址p)p1=p2; (指针变量p2值p1)指针变量与其指向的变量具有相同数据类型3pi p id (i为整型数,d为p指向的变量所占字节数)p+, p-, p+
2、i, p-i, p+=i, p-=i等若p1与p2指向同一数组,p1-p2=两指针间元素个数(p1-p2)/dp1+p2 无意义例 p指向int型数组,且p=&a0; 则p+1 指向a1例 int a10; int *p=&a2; p+; *p=1;例 int a10; int *p1=&a2; int *p2=&a5; 则:p2-p1=3;a0a1a2a3a4a5a6a7a8a9a数组pp+1,a+1p+i,a+ip+9,a+91指针的算术运算:例 p指向float数,则 p+1 p+1 44若p1和p2指向同一数组,则p1p2 表示p1指的元素在后p1=p2 表示p1与p2指向同一元素若p
3、1与p2不指向同一数组,比较无意义指针变量的关系运算5a0a1a2a3a9.aa+9a+1a+2地址元素下标法a0a1a2a9a0a1a2a3a9.pp+9p+1p+2地址元素指针法*p*(p+1)*(p+2)*(p+9) 变址运算符ai *(a+i)ai pi *(p+i) *(a+i)*a*(a+1)*(a+2)*(a+9)p0p1p2p96a0a1a2a3a4main() int a5,*pa,i; for(i=0;i5;i+) ai=i+1; pa=a; for(i=0;i5;i+) printf(*(pa+%d):%dn,i,*(pa+i); for(i=0;i5;i+) print
4、f(*(a+%d):%dn,i,*(a+i); for(i=0;i5;i+) printf(pa%d:%dn,i,pai); for(i=0;i5;i+) printf(a%d:%dn,i,ai);12345pa例 数组元素的引用方法7例 int a=1,2,3,4,5,6,7,8,9,10,*p=a,i; 数组元素地址的正确表示:(A)&(a+1) (B)a+ (C)&p (D)&pi数组名是地址常量p+,p- ()a+,a- ()a+1, *(a+2) ()8例 void main() int a =5,8,7,6,2,7,3; int y,*p=&a1; y=(*-p)+; printf
5、(“%d ”,y); printf(“%d”,a0); 输出:5 6pp58762730123456a6例 注意指针变量的运算9main() int i,*p,a7; p=a; for(i=0;i7;i+) scanf(%d,p+); printf(n); for(i=0;i7;i+,p+) printf(%d,*p);p=a;pp58762730123456apppppp指针变量可以指到数组后的内存单元例 注意指针的当前值10int *p 与 int q10 数组名是指针(地址)常量p=q; p+i 是qi的地址数组元素的表示方法:下标法和指针法, 即若p=q, 则 pi qi *(p+i)
6、 *(q+i) 一级指针变量与一维数组的关系11指针与字符串字符串表示形式 用字符数组实现例 main( ) char string=“I love China!”; printf(“%sn”,string); printf(“%sn”,string+7); IloveChistring0string1string2string3string4string5string6string7string8string9stringstring10string11string12string13n!a012例 main( ) char *string=“I love China!”; printf(“
7、%sn”,string); printf(“%sn”,string+7); IloveChistringn!a0字符指针初始化:把字符串首地址赋给string char *string; string=“I love China!”;string用字符指针实现13例 用函数调用实现字符串复制(1)用字符数组作参数aIamateaceh0r.fromabyuarasutndetoboet.0Iaaeceh0r.t.0mtavoid copy_string(char from,char to) int i=0; while(fromi!=0) toi=fromi;i+; toi=0;main() char a50=I am a teacher.; char b50=You are a student.; printf(string_a=%sn string_b=%sn,a,b); copy_string(a,b); printf(nstring_a=%snstring_b=%sn,a,b);字符串指针作函数参数