普通指针
#include <stdio.h>
int main(){
int *p1,*p2,*p;
int a=1,b=2;
p1=&a,p2=&b;
if(a<b){
p=p1;
p1=p2;
p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("a=%d,b=%d",*p1,*p2);
return 0;
}
数组指针
#include <stdio.h>
int main(){
int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int (*p)[4];
p=a;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
printf("%d\n",*(*(p+i)+j));
}
}
}
指针数组
#include <stdio.h>
int main(){
int x[]={1,2,3,4};
int y[]={5,6,7,8};
int a=100;
int *p[3]={x,y,&a};
printf("x=%d, y=%d,z=%d\n",*(p[0]),*(p[1]),*(p[2]));
printf("x=%d, y=%d,z=%d\n",*(*p),*(*(p+1)),*(*(p+2)));
printf("x=%d, y=%d,z=%d\n",p[0][0],p[1][0],*p[2]);
return 0;
}
参数指针
#include <stdio.h>
void swap1(int a,int b);
void swap2(int *p1,int *p2);
int main(){
int *p1,*p2;
int a=3,b=5;
p1=&a,p2=&b;
swap1(a,b);
printf("a=%d,b=%d\n",a,b);
swap2(p1,p2);
printf("a=%d,b=%d",a,b);
return 0;
}
void swap1(int a,int b){
int temp=a;
a=b;
b=temp;
}
void swap2(int *p1,int *p2){
int temp=*p1;
*p1=*p2;
*p2=temp;
}