指针程序练习1.c #include <stdio h> ∥预编译命令 void maino ∥主函数 ∥函数体开始 int i char s[="abcdef; ∥/S为字符数组 char*t="abcdef t为指向字符数组的指针变量 char*p={ abcdef;"ghjk","mnop"," gust};/为指针数组变量,p数组元素依次指向 ∥字符串" abcdef";" ghijk","mnop";" grstuv' char*q卩={p,p+2p+3,p+1};∥q为指针数组变量,q数组元素依次指向指针数组元素p[O],p2],p[3],p[ char* *r-g ∥r为3级指针变量,是指向指针数组q的指针,而q又是指向指针数组p的指针 printf( %sⅦn";p) printf("Q1:下述等式成立吗?p0]=*(p+0)=pinn);∥测试p[O*(p+0),p三者是否相同 f(p[0]==*(p+0)&&('p=p[oD) printf("It成立!n") ∥成立 printf("输出'为%sn",p);∥输出 abcdef printf(输出*(p+0)为%sⅦn",`(p+0);∥输出 abcdef printf(输出p[]为%sⅦn",p[0);∥输出 abcdef printf输出s为%sⅦn"sS); ∥输出 abcdef
指针程序练习1.c #include <stdio.h> //预编译命令 void main() //主函数 { //函数体开始 int i; char s[] = "abcdef"; //s{]为字符数组 char* t = "abcdef"; //t为指向字符数组的指针变量 char* p[]={"abcdef","ghijk","lmnop","qrstuv"}; //p为指针数组变量,p数组元素依次指向 //字符串"abcdef","qhijk","lmnop","qrstuv" char** q[]={p,p+2,p+3,p+1}; // q 为指针数组变量,q数组元素依次指向指针数组元素 p[0] , p[2] , p[3] , p[1] char** *r=q; // r 为 3 级指针变量,是指向指针数组q 的指针,而q 又是指向指针数组p 的指针 /////////////////////////////////////////////////////////////// printf("----------------------%s\n",*p); printf(“Q1:下述等式成立吗?p[0]= *(p+0) = *p\n\n”); //测试 p[0],*(p+0),*p 三者是否相同 if( p[0] == *(p+0)) && (*p=p[0]) ) printf(“\t成立!\n"); //成立 printf(" 输出 *p 为%s\n",*p); //输出abcdef printf(" 输出*(p+0)为%s\n",*(p+0)); //输出abcdef printf(" 输出 p[0] 为%s\n",p[0]); //输出abcdef printf(" 输出 s 为%s\n",s); //输出abcdef }
指针程序练习2c void maino ∥主函数 ∥数体开始 int i: char sl="abcdef S为字符数组 t为指向字符数组的指针变量 char*pl= fabcdef";" ghijk","mnop"," qustus"};为指针数组变量,p数组元素依次指向 ∥}字符串" abcdef";" ghijk","mnop"; grstuv char*q卩={pp+2p+3p+1};∥q为指针数组变量,q数组元素依次指向指针数组元素p[O],p[2],p3]p[1 char** *r=q ∥r为3级指针变量,是指向指针数组q的指针, printf"Q2:下述等式成立吗?q[2}*(q+2)=&(p3])=p+3nn");W测试q[2]*(q+2),&p[3]p+3四者是否相同 if(q|2]==(q+2)&& q[2]==&(p{3&& [2]==p+3) printf("nlt成立!n") ∥/成立 prnt输出q[2]为%Xn",q[2D;∥输出p[3]的地址 printi输出*(q+2)为%Xn";(q+2);∥输出p[3]的地址 printf"输出&p[3]为%Xn",&p[3);!输出p3]的地址 prnt输出p+3为%Xn",p+3);∥输出p3]的地址
指针程序练习2.c void main() //主函数 { //函数体开始 int i; char s[] = "abcdef"; //s{]为字符数组 char* t = "abcdef"; //t为指向字符数组的指针变量 char* p[]={"abcdef","ghijk","lmnop","qrstuv"}; //p为指针数组变量,p数组元素依次指向 //字符串"abcdef","qhijk","lmnop","qrstuv" char** q[]={p,p+2,p+3,p+1}; // q 为指针数组变量,q 数组元素依次指向指针数组元素 p[0], p[2], p[3], p[1] char** *r = q ; // r 为 3 级指针变量,是指向指针数组 q 的指针, printf("Q2: 下述等式成立吗?q[2]= *(q+2)=&(p[3])= p+3\n\n"); //测试q[2],*(q+2),&p[3],p+3四者是否相同 if (q[2] == *(q+2) && q[2] == &(p[3]) && q[2] == p+3 ) printf("\n\t成立!\n"); // 成立 printf(" 输出 q[2] 为%X\n",q[2]); //输出p[3]的地址 printf(" 输出*(q+2) 为%X\n",*(q+2)); //输出p[3]的地址 printf(" 输出 &p[3] 为%X\n",&p[3]); //输出p[3]的地址 printf(" 输出 p+3 为%X\n",p+3); //输出p[3]的地址 }
指针程序练习3 void main( ∥主函数 ∥数体开始 nt i char sl="abcdef ∥/S为字符数组 char*t= abcdef 为指向字符数组的指针变量 char*pp={ fabcdef;"ghk"mnop;" qrst"};/为指针数组变量,p数组元素依次指向 ∥字符串" abcdef";" ghijk","mnop"; gust" char*q={p,p+2p+3,p+1};∥q为指针数组变量,q数组元素依次指向指针数组元素p0],p[2],p3],p1 charT = q ∥r为3级指针变量,是指向指针数组q的指针 printf("o3:下述等式成立吗?「[oJ[o]=sn);∥测试roI0]与s是否相同 pintfc"nroj[o]=qoo]=p[0o]=p[0]=s=Vabcde"Ⅶn"); if(r[oJo]==s pint(nt成立!nn";∥成立
指针程序练习3.c void main( ) //主函数 { //函数体开始 int i; char s[] = "abcdef"; //s{]为字符数组 char* t = "abcdef"; //t为指向字符数组的指针变量 char* p[]={"abcdef","ghijk","lmnop","qrstuv"}; //p为指针数组变量,p数组元素依次指向 //字符串"abcdef","qhijk","lmnop","qrstuv" char** q[]={p,p+2,p+3,p+1}; // q 为指针数组变量,q 数组元素依次指向指针数组元素 p[0] , p[2] , p[3] , p[1] char** *r = q ; // r 为 3 级指针变量,是指向指针数组q 的指针, printf(“Q3: 下述等式成立吗?r[0][0] = s \n”); // 测试 r[0][0] 与 s 是否相同 printf("\nr[0][0] = q[0][0] = p[0][0] = p[0] = s = \"abcdef\" \n"); if (r[0][0] == s) printf("\n\t成立!\n\n"); // 成立 }
指针程序练习4c void maino ∥主函数 ∥数体开始 char sl="abcdef ∥/s为字符数组 为指向字符数组的指针变量 char*p={" abcdef","ghjk","mnop"," qrst"};/为指针数组变量,p数组元素依次指向 ∥字符串" abcdef;"qhjk"mnop"," gustav" char*q=pp+2p+3,p+1};∥q为指针数组变量,q数组元素依次指向指针数组元素po],p[2],p3],p1 char** *r =q ∥r为3级指针变量,是指向指针数组q的指针 printf(G4:下述等式成立吗?rojo]=*([o+0)=*([oD=*(*(r+0)=*(r=*rn"); ∥测试ro[o](o+0),*(r[O])*((+O),*(')*六者是否相同 if(roo]='([0y+0)&& 「[0J[o]==([])&& [oJo]==*(*(r+0)&& 「oJo]==*T)&& 「[oJ[o]==*) printf("It成立!n ∥)立 print(“输出『oJ[O]为%sⅥn",r[oj[o);∥输出*的值,字符串 printf(“输出([o]+0)为%sⅦn,*([O]+0);/输出p[3的内容,字符串 printf("输出’(ro为%sⅦn",*(r[oD); ∥输出*r的值,字符串 printi输出*(*(r+0)为%sn";*(〔r+o);∥输出*r的值,字符串 printf(输出*(')为%sⅥn”,*(') 输出*('n)的值,字符串 printi(c输出*r为%sⅦn",*r); ∥输出*r的值,字符串
指针程序练习4.c void main() //主函数 { //函数体开始 int i; char s[] = "abcdef"; //s{]为字符数组 char* t = "abcdef"; //t为指向字符数组的指针变量 char* p[]={"abcdef","ghijk","lmnop","qrstuv"}; //p为指针数组变量,p数组元素依次指向 //字符串"abcdef","qhijk","lmnop","qrstuv" char** q[] = {p,p+2,p+3,p+1}; // q 为指针数组变量,q数组元素依次指向指针数组元素p[0] , p[2] , p[3] , p[1] char** *r = q ; // r 为 3 级指针变量,是指向指针数组q 的指针, printf("Q4: 下述等式成立吗?r[0][0]=*(r[0]+0)=*(r[0])=*(*(r+0))=*(*r)=**r\n"); ///测试r[0][0],*(r[0]+0),*(r[0]),*(*(r+0)),*(*r),**r六者是否相同 if (r[0][0] == *(r[0]+0) && r[0][0] == *(r[0]) && r[0][0] == *(*(r+0)) && r[0][0] == *(*r) && r[0][0] == **r) printf(“\t成立!\n"); //成立 printf(“ 输出 r[0][0] 为%s\n”,r[0][0]); //输出**r的值,字符串 printf(“ 输出 *(r[0]+0) 为%s\n”,*(r[0]+0)); //输出p[3]的内容,字符串 printf(" 输出 *(r[0]) 为 %s \n",*(r[0])); //输出**r的值,字符串 printf(" 输出 *(*(r+0)) 为 %s \n",*(*(r+0))); //输出**r的值,字符串 printf(“ 输出 *(*r) 为 %s\n”,*(*r)); //输出*(*r)的值,字符串 printf(“ 输出 **r 为 %s\n”, **r); //输出**r的值,字符串 }
指针程序练习5c #include <stdio h> ∥预编译命令 void maino ∥主函数 ∥函数体开始 int i char sl="abcdef ∥/S为字符数组 chart= abcdef 为指向字符数组的指针变量 char*p= fabcdef"; ghijk","mnop"," gostun"};为指针数组变量,p数组元素依次指向 ∥字符串" abcdef";"qhjk"," Inop"; qrst" char*q={p,p+2p+3,p+1};∥q为指针数组变量,q数组元素依次指向指针数组元素p0],p[2],p3],p1 char r=g ∥r为3级指针变量,是指向指针数组q的指针 ∥而q又是指向指针数组p的指针 printf("Q5:请观察下列结果n");∥观察&r,r,t,『],*r(%X,*0],*r(%s),忄0]的结果 printf("r变量本身的地址&radd1:%Xn",&r);∥输出r变量本身的地址 printf("r变量指向的地址radd1:%Xn",r);∥输出r变量指向的地址 printf(°·r指向的地址*add1:%Xvn",η;∥输出指向的地址 printffrO]指向的地址radd1:%Xn",ro);∥输出「o]指向的地址 printf*r指向的地址radd1:%Xvn",*η;∥输出*指向的地址 printf("·to指向的地址radd1:%Xn",o);∥输出↑0]指向的地址 prnt*r指向的内容radd1:%sⅦn",*η);∥输出*指向的内容 }(To指向的内容radd1:%sn",↑0;∥输出*0]指向的内容
指针程序练习5.c #include <stdio.h> //预编译命令 void main() //主函数 { //函数体开始 int i; char s[] = "abcdef"; //s{]为字符数组 char* t = "abcdef"; //t为指向字符数组的指针变量 char* p[]={"abcdef","ghijk","lmnop","qrstuv"}; //p为指针数组变量,p数组元素依次指向 //字符串"abcdef","qhijk","lmnop","qrstuv" char** q[]={p,p+2,p+3,p+1}; // q 为指针数组变量,q 数组元素依次指向指针数组元素 p[0] , p[2] , p[3] , p[1] char** *r=q; // r 为 3 级指针变量,是指向指针数组q 的指针, // 而 q 又是指向指针数组p 的指针 printf("Q5: 请观察下列结果\n"); ///观察 &r, r, *r, r[0], **r(%x), *r[0], **r(%s), *r[0] 的结果 printf("r 变量本身的地址&r add1: %X\n", &r); // 输出 r 变量本身的地址 printf("r 变量指向的地址r add1: %X\n", r); // 输出 r 变量指向的地址 printf("*r 指向的地址 *r add1: %X\n", *r); // 输出 *r 指向的地址 printf("r[0] 指向的地址 r add1: %X\n", r[0]); // 输出 r[0] 指向的地址 printf("**r 指向的地址 r add1: %X\n", **r); // 输出 **r 指向的地址 printf("*r[0] 指向的地址r add1: %X\n", *r[0]); // 输出 *r[0] 指向的地址 printf("**r 指向的内容 r add1: %s\n", **r); // 输出 **r 指向的内容 printf("*r[0] 指向的内容r add1: %s\n", *r[0]); // 输出 *r[0] 指向的内容 }