利用指针交换数字
1 #include<stdio.h> 2 int main() 3 { void swap(int *p1,int *p2); 4 int a,b; 5 int *pointer_1,*pointer_2; 6 scanf("%d,%d",&a,&b); 7 pointer_1=&a; 8 pointer_2=&b; 9 swap(pointer_1,pointer_2); 10 printf("%d,%d\n",a,b); 11 return 0; 12 } 13 void swap(int *p1,int *p2) 14 { int *t; 15 *t=*p1; 16 *p1=*p2; 17 *p2=*t; 18 }
无运行结果
错因分析:*p1就是a,*p2就是b,都是整型变量,而*t是指针变量t所指向的变量,但上面并没有给t赋值,所以*t是未知的。
改正方法:
{ int *t,c; t=&c; *t=*p1; *p1=*p2; *p2=*t; }
或者
{ int t; t=*p1; *p1=*p2; *p2=t; }
利用指针输出整型数组
#include<stdio.h> int main() { int *p,i,a[10]; p=a; for(i=0; i<10; i++) scanf("%d",p++); for(i=0; i<10; i++,p++) printf("%d",*p); printf("\n"); return 0; }
运行结果不正确
错因分析:因为p最初指向a[0],在输入数组值后,p已经指向a数组的末尾,因此在第二个for循环前需要重新使p指向a[0]。
解决方法:
#include<stdio.h> int main() { int i,a[10],*p=a; for(i=0; i<10; i++) scanf("%d",p++); p=a; //重新使p指向a[0] for(i=0; i<10; i++,p++) printf("%d",*p); printf("\n"); return 0; }
原文:https://www.cnblogs.com/hongjiamin/p/10111690.html