zoukankan      html  css  js  c++  java
  • 指针做传参时值传递和地址传递的区别

    前些天一直在看指针这块,遇到了一个问题,一直没有看透.后面通过各种打印地址或值输入,最终弄懂,为防止忘记,特在此记录下,同时也给需要的朋友一点指点,如果有不对的地方,还请朋友们指出,并相互交流下,谢谢.

    问题:输入的两个整数按大小顺序输出。用函数处理,而且用指针类型的数据作函数参数。

    解题:指针值传递

    swap(int *p1,int *p2)

    {

    int temp;

    temp=*p1;

    *p1=*p2;

    *p2=temp;

    }

    main()

    {

    int a,b;

    int *pointer_1,*pointer_2;

    printf("please input two number: ");

    scanf("%d%d",&a,&b);

    pointer_1=&a;

    pointer_2=&b;

    swap(pointer_1,pointer_2);

    printf(" a=%d,b=%d ",a,b);

    }

    输出:

    please input two number:

    1 3

    a=3,b=1

    解析:输入原理如下

    上面指针值传递是正确的,下面指针传递又如何呢?,看看......

    解题:指针地址传递

    swap(int *p1,int *p2)

    {
    int *p;
    p=p1;
    p1=p2;
    p2=p;
    }

    输出:

    please input two number:

    1 3

    a=1,b=3

    ????????

    我们不是交换地址了吗?怎么值会没有改变呢?

    解析:输出原理又如下,将与上面的值传递是有差别的.

    有了上面的简易分析流程,我们能够比较直观的了解指针值传递和指针地址传递的不同。

     

  • 相关阅读:
    Enable Zombie
    python中调用c文件中的函数(ubuntu)
    NSNotificationCenter使用心得(原)
    TCP/UDP
    xcconfig 文件使用( 转 )
    TS流解析 (转)
    c 数字和char类型转换
    结构体如何使用NSData包装
    NSValue 保存定长的结构体
    遍历DOM的所有节点,输出宽度高度都大于50的元素节点名称
  • 原文地址:https://www.cnblogs.com/ltlly/p/4110984.html
Copyright © 2011-2022 走看看