例1:改变指针变量指向的变量值 main inta=3,b=5,t,*p1=&a,*p2=&b; printf(%d\t%d\n, a, b) 七=*p1; 米p1=*p2 米p2=t printf(“%\t%d\n”,a,b); }
main() { int a=3,b=5,t,*p1=&a,*p2=&b; printf(“%d\t%d\n”,a,b); t=*p1; *p1=*p2; *p2=t; printf(“%d\t%d\n”,a,b); } 例1: 改变指针变量指向的变量值
例2:只交换指针变量的值,将不影响指针变量指向值 main inta=3,b=5,*t,*p1=&a,*p2=8b printf(“a: value%d\tb: value%d\n”,a,b) t=p1; pl-pZ p2=t; printf(“a: value%d\tb: value%d\n”,*p1,*2)
main() { int a=3,b=5,*t,*p1=&a,*p2=&b; printf(“a:value%d\tb:value%d\n”,a,b); t=p1; p1=p2; p2=t; printf(“a:value%d\tb:value%d\n”,a,b); } 例2: 只交换指针变量的值,将不影响指针变量指向值 printf(“a:value%d\tb:value%d\n”,*p1,*p2);
第四节指针与一维数组 1.指向一维数组元素的指针变量 如:inta[5],*p=a; int a[51, *p; p=a a+1-a07 p+1 inta[5],*p=&a[0] inta[5],*p;p=&a[0]; a+3a[2 a[3] +3 a[4] a+i,p+i? a+ip+i代表&a[
第四节 指针与一维数组 1.指向一维数组元素的指针变量 如: int a[5],*p=a; int a[5],*p;p=a; int a[5],*p=&a[0]; int a[5],*p;p=&a[0]; a[0] a[1] a[2] a[3] a[4] a p a+1,p+1? a+1 p+1 a+i,p+i? a+3 p+3 a+i,p+i代表&a[i]
说明: 1)在C语言中,有一个等式永远成立,即a[无条 件等价于*(a+i) 2)当指针变量p指向了数组的首元素之后, 数组a[]可以表示为下以下几种形式: a[i]*(p+)米(a+i)p[i] 数组a[]的地址可以表示为下以下几种形式 &ali] p+i a+i &pll
说明: 2)当指针变量p指向了数组的首元素之后, 数组a[i]可以表示为下以下几种形式: a[i] 数组a[i]的地址可以表示为下以下几种形式 &a[i] 1)在C语言中,有一个等式永远成立,即a[i]无条 件等价于*(a+i) *(p+i) *(a+i) p[i] p+i a+i &p[i]
例1:写出下列程序的运算结果 main inta[10]={1,2,3,4,5,6,7,8,9,10},k,*p=a; *(p+2)+p[3]+a[3]+a[4+(a+7); printf(“%d\n”,k); 24
main() { int a[10]={1,2,3,4,5,6,7,8,9,10},k,*p=a; k=*(p+2)+p[3]+a[3]+a[4]+*(a+7); printf(“%d\n”,k); } 例1: 写出下列程序的运算结果 24