案例六:
#include<bits/stdc++.h> using namespace std; int main() { int ary[3][3]={10,11,12,20,21,22,30,31,32}; int *p1,*p2; p2=p1=&ary[0][0]; printf("%d %d\n",*p2,*(p1+0)); printf("%d %d\n",*(++p2),ary[2][2]); printf("%d %d\n",*(p2+1),*(p1+1)+1); return 0; } Console: 10 10 11 32 12 12
案例七(引用Swap):
#include<bits/stdc++.h> using namespace std; void swap(int &a, int &b) { // 引用复制,不是改变它地址,而是改变该地址对应的内容 int &c=a; int d=a; // printf("%d\n",&c); // printf("%d\n",&d); a=b; // printf("%d\n",&a); // printf("%d\n",&b); b=d; return; } int main() { int a=2,b=3; printf("%d\n",&a); printf("%d\n",&b); swap(a,b); printf("%d %d\n",a,b); return 0; }
案例八(指针Swap):
#include<bits/stdc++.h> using namespace std; void swap(int *a,int *b) { // printf("%d\n",a); // printf("%d\n",b); int c=*a; *a=*b; *b=c; return; } int main() { int a=2,b=3; // printf("%d\n",&a); // printf("%d\n",&b); swap(&a,&b); printf("%d %d\n",a,b); return 0; }
案例九(二维指针申请空间):
#include<bits/stdc++.h> using namespace std; typedef char** s; int main() { int i,rowlen=3,colen=4; s S; S=new char*[rowlen]; for(i=0;i<rowlen;i++) { // scanf("%s",&S[i]); S[i]=new char[colen]; cin>>S[i]; } for(i=0;i<rowlen;i++) // printf("%s\n",&S[i]); cout<<S[i]<<endl; }