#include<stdio.h> main() { int *p,a,c=3; float *q,b; p=&a, q=&b, printf("please input the value of a,b:"); scanf("%d%f",p,q); printf("result:\n"); printf("%d,%f\n",a,b); printf("%d,%f\n",*p,*q); printf("the address of a,b:%p,%p\n",&a,&b); printf("the address of a,b:%p,%p\n",p,q); p=&c; printf("c=%d\n",*p); printf("the address of c:%x,%x\n",p,&c); return 0; }
scanf("%d%f",p,q)才对,而后面的通过指针p,q间接输出a,b的值才是*p,*q.所以说它们之间的关系一定要弄清楚。
#include<stdio.h> void swap1(int x,int y); void swap2(int *x,int *y); main() { int a,b; printf("please input a=:"); scanf("%d",&a); printf("\nb=:"); scanf("%d",&b); swap1(a, b); printf("\nafter call swap1:a=%d b=%d\n",a,b); swap2(&a, &b); printf("\nafter call swap2:a=%d b=%d\n",a,b); return 0; } void swap1(int x,int y) { int temp; temp=x; x=y; y=temp; } void swap2(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; }
#include<stdio.h> char *reverse(char *str); char *link(char *str1, char *str2); main() { char str[30], str1[30], *str2; printf("input reversing character string:"); gets(str); str2=reverse(str); printf("\noutput reversed character string:"); puts(str); printf("input string1:"); gets(str); printf("input string2:"); gets(str1); str2=link(str,str1); puts(str2); return 0; } char *reverse(char *str) { char *p,*q,temp; p=str, q=str; while(*p !=‘\0‘) // 判断是否是最后一个数值 p++; p--; while(q<p) { temp=*q; *q=*p; *p=temp; p--; //指针做相向移动处理 q++; } return str; } char *link(char *str1, char *str2) { char *p=str1, *q=str2; while(*p !=‘\0‘) p++; while(*q !=‘\0‘) { *p=*q; p++; q++; } str2=NULL; // 令结束字符为空字符 return str1; }
#include<stdio.h> #define N 10 void arrsort(int a[],int n); main() { int a[N],i; for (i=0;i<N;i++) scanf("%d",&a[i]); arrsort(a,N); for (i=0;i<N;i++) printf("%d ",a[i]); } void arrsort(int a[],int n) { int *p,*q,temp; p=a; q=a+n-1; while(p<q){ while(*p%2!=0) p++; while(*q%2==0) q--; if(p>q) break; temp=*p; *p=*q; *q=temp; p++; q--; } }
1、a,&a,*a这几个一定要分清楚,而且如果是int *a和*a也是不一样的,前者是指定义a为指针,后者是一个值
2、当形参作为整型变量被调用时,实参的值传递给它们,实参变量和形参变量定义是在不同的函数中的局部变量,存储的地址不同,所以在函数内交换形参的值对实参的值是不会有影响的
3、当形参是作为整型指针变量,而被调用时,实参的地址值将被传递给形参,这个时候实参和形参具有相同的内存存储地址,从而可以实现实参的值的交换
4、一个字符串在内存中是连续存放的,它的开始地址为指向字符串的指针值,而字符串的结束字符为‘\0’
5、使用返回指针的函数时,记得使用return返回一个指针值
原文:https://www.cnblogs.com/songmengnan/p/11013405.html