数组指针示例2

来源:互联网 发布:刷app下载量软件 编辑:程序博客网 时间:2024/06/04 01:30

  1 #include<stdio.h>
  2 
  3 char* func()
  4 {
  5         char a = '#';
  6         return &a;//不要返回普通局部变量的地址!
  7 }
  8 
  9 void f1(int *p,int *q){int* t = p;p = q;q = t;}
 10 void f2(int *p,int *q){int t = *p;*p = *q;*q = t;}
 11 void f3(int a,int b){int t = a;a = b;b = t;}
 12  

13 void show(double a[],int n)//a看似数组 其实是指针

 14 {
 15         double x = 123.45;
 16         printf("sizeof a  = %d\n",sizeof(a));
 17         a = &x;
 18         printf("*a = %g\n",*a);
 19 }
 20 
 21 void print(double *p,int n)
 22 {
 23         int i;
 24         for(i = 0;i<n;i++)
 25                 printf("%g ",p[i]);
 26         printf("\n");
 27 }
 28 
 29 int main()
 30 {
 31         double o[5] = {1.1,2.2,3.3,4.4,5.5,};
 32         show(o,5);
 33         print(o,5);
 34 
 35         char c = '@';
 36         char* p1 = &c;
 37         *p1 = '$';
 38         printf("c = %c\n",c);
 39 
 40 
 41         printf("*p = %c\n",*p1);
 42         printf("*p = %c\n",*p1);//输出可能不是‘#’了
 43 
 44         int a = 10,b = 20;
 45         //int t = a;a = b;b = t;
 46         int x,y[5],*p = &a,*q = &b;
 47         int t = *p;*p = *q;*q = t;
 48         printf("a = %d,b = %d\n",a,b);
 49         int m = 10,n = 20;
 50         int *u = &m,*v = &n;
 51         int*w = u;u = v;v = w;
 52         printf("m = %d,n = %d",m,n);
 53 
 54         f1(&m,&n);printf("m = %d,n = %d\n",m,n);//把复制过的地址做操作也没有影响
 55         f2(&m,&n);printf("m = %d,n = %d\n",m,n);//对原始变量进行操作 所以有改变
 56         f3(m,n);printf("m = %d,n = %d\n",m,n);//值传递都是复制品的传递
 57         return 0;
 58 }
0 0
原创粉丝点击