指针
Posted hongjiamin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针相关的知识,希望对你有一定的参考价值。
利用指针交换数字
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 ",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(" "); 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(" "); return 0; }
以上是关于指针的主要内容,如果未能解决你的问题,请参考以下文章