C语言指针二(地址法理解)

江一帆 2020-03-22 PM 7361℃ 58条 2981字 Site load time is:216 ms 百度:已收录

值传递和引用传递

” 按值传递 “中包括值传递(实实在在的值啊!)和指针传递(指针传递参数本质上是值传递的方式,它所传递的是一个地址值),传递的都是实参的一个拷贝。

#include <iostream>
using namespace std;

void swap(int x, int y) {
    int tmp;
    tmp = x;
    x = y;
    y = tmp;
}

int main() {
    int a = 2, b = 3;
    printf("before:%d,%d\n", a, b);
    swap(a, b);
    printf("later:%d,%d\n", a, b);
    return 0;
}

结果:

before:2,3
later:2,3

下面的例子体现了不论传递的是值还是指针 (指针也是一个值),传递给被调用函数的都是实参的一个拷贝,直接对拷贝进行操作不会影响实参

#include <iostream>
using namespace std;

void swap(int *x, int *y) {
    cout<<"函数内-start"<<endl;
    cout<<"*x:"<<*x<<" *y:"<<*y<<endl;
    cout<<"&x:"<<&x<<" &y:"<<&y<<endl;
    cout<<"x:"<<x<<" y:"<<y<<endl;
    cout<<"开始交换"<<endl;
    int *temp= NULL;   //因为x,y的类型都是int *
    temp= x;   //temp= &a   &a:0x61fe1c &b:0x61fe18
    x = y;     // &a= &b
    y = temp;   //&b=temp
    //所以交换x,y只是交换了两者存储的值(值为&a,&b),并没有涉及到主函数a,b值的交换
    //所以只是操作地址并没有卵用
    cout<<"*x:"<<*x<<" *y:"<<*y<<endl;
    cout<<"&x:"<<&x<<" &y:"<<&y<<endl;
    cout<<"x:"<<x<<" y:"<<y<<endl;
    cout<<"函数内-end"<<endl;
}
int main() {
    int a = 2, b = 3;
    cout<<"before a:"<<a<<" b:"<<b<<endl;
    cout << "before &a:" << &a << " &b:" << &b << endl;
    swap(&a, &b);
    cout<<"later a:"<<a<<" b:"<<b<<endl;
    cout << "later &a:" << &a << " &b:" << &b << endl;
    return 0;
}

结果

before a:2 b:3
before &a:0x61fe1c &b:0x61fe18

函数内-start
*x:2 *y:3                   //0x61fe1c->2,0x61fe18->3
&x:0x61fdf0 &y:0x61fdf8
x:0x61fe1c y:0x61fe18   
开始交换
*x:3 *y:2                  //0x61fe1c->2,0x61fe18->3
&x:0x61fdf0 &y:0x61fdf8
x:0x61fe18 y:0x61fe1c
函数内-end

later a:2 b:3
later &a:0x61fe1c &b:0x61fe18

x,y交换.jpg

#include <iostream>
using namespace std;

void swap(int *x, int *y) {
    cout<<"函数内-start"<<endl;
    cout<<"*x:"<<*x<<" *y:"<<*y<<endl;
    cout<<"&x:"<<&x<<" &y:"<<&y<<endl;
    cout<<"x:"<<x<<" y:"<<y<<endl;
    cout<<"开始交换"<<endl;
    int temp;
    //*x作用就是:取指针x的值(&a),再把这个值作为地址,再取这个地址的值!相当于*(&a)=a
    temp= *x;  //temp=a
    *x = *y;   //a=b
    *y = temp;    //b=temp
    cout<<"*x:"<<*x<<" *y:"<<*y<<endl;
    cout<<"&x:"<<&x<<" &y:"<<&y<<endl;
    cout<<"x:"<<x<<" y:"<<y<<endl;
    cout<<"函数内-end"<<endl;
}
int main() {
    int a = 2, b = 3;
    cout<<"before a:"<<a<<" b:"<<b<<endl;
    cout<<"before &a:"<<&a<<" &b:"<<&b<<endl;
    swap(&a, &b);
    cout<<"later a:"<<a<<" b:"<<b<<endl;
    cout<<"later &a:"<<&a<<" &b:"<<&b<<endl;
    return 0;
}

结果:

before a:2 b:3
before &a:0x61fe1c &b:0x61fe18

函数内-start
*x:2 *y:3
&x:0x61fdf0 &y:0x61fdf8
x:0x61fe1c y:0x61fe18
开始交换
*x:3 *y:2
&x:0x61fdf0 &y:0x61fdf8
x:0x61fe1c y:0x61fe18
函数内-end

later a:3 b:2
later &a:0x61fe1c &b:0x61fe18

x,y交换 (2).jpg

标签: none

本文最后更新于:2020-03-23 15:40,可能因经年累月而与现状有所差异。

非特殊说明,本博所有文章均为博主原创。

评论啦~



已有 58 条评论


  1. 陈异铥
    陈异铥

    陈异铥:文章真不错http://meig.1ut9wd.cn

    回复 2024-08-31 00:54
  2. fnyeinyovd
    fnyeinyovd

    博主真是太厉害了!!!

    回复 2024-09-22 18:02
  3. hxhgyxxwwx
    hxhgyxxwwx

    叼茂SEO.bfbikes.com

    回复 2024-09-22 21:16
  4. kfoophjjvq
    kfoophjjvq

    怎么收藏这篇文章?

    回复 2024-09-27 12:13
  5. umezkhpolh
    umezkhpolh

    不错不错,我喜欢看 https://www.237fa.com/

    回复 2024-10-01 20:34
  6. cpqjnaeqij
    cpqjnaeqij

    不错不错,我喜欢看 https://www.237fa.com/

    回复 2024-10-01 20:34
  7. bfgmrcbzyk
    bfgmrcbzyk

    看的我热血沸腾啊https://www.ea55.com/

    回复 2024-10-04 21:00
  8. pwmhmlmuwm
    pwmhmlmuwm

    想想你的文章写的特别好www.jiwenlaw.com

    回复 2024-10-05 19:49
  9. cojdnuhtlb
    cojdnuhtlb

    哈哈哈,写的太好了https://www.cscnn.com/

    回复 2024-10-19 14:21
  10. ioxfqhvztn
    ioxfqhvztn

    真棒!

    回复 2024-11-14 04:01
  11. syonyywvtb
    syonyywvtb

    你的文章内容非常精彩,让人回味无穷。 http://www.55baobei.com/hNnWkBg1zF.html

    回复 2024-11-14 22:20
  12. bjyxjixxkb
    bjyxjixxkb

    你的才华让人惊叹,请继续保持。 https://www.yonboz.com/video/98850.html

    回复 2024-11-15 18:25
  13. tzkleawqsu
    tzkleawqsu

    真好呢

    回复 2024-11-20 08:28
  14. lzjxdisstz
    lzjxdisstz

    哈哈哈,写的太好了https://www.lawjida.com/

    回复 2025-01-06 13:39
  15. plowywstrz
    plowywstrz

    多语种文献的引用彰显学术包容性。

    回复 2025-02-28 18:44
  16. oopmaqorjs
    oopmaqorjs

    这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。

    回复 2025-03-01 02:28
  17. borgujkmpt
    borgujkmpt

    这篇文章提供了宝贵的经验和见解,对读者有很大的启发和帮助。

    回复 2025-03-02 16:56
  18. osovuiagiw
    osovuiagiw

    选材新颖独特,通过细节描写赋予主题鲜活生命力。

    回复 2025-03-02 21:17
  19. dfnijmbzqc
    dfnijmbzqc

    平淡中见真章,质朴处显功力。

    回复 2025-03-02 22:38
  20. suryzqsjqu
    suryzqsjqu

    作者对主题的挖掘深入骨髓,展现了非凡的洞察力和理解力。

    回复 2025-03-04 19:34
  21. mshtuarcfo
    mshtuarcfo

    防线秘密护送

    回复 2025-04-30 04:01
  22. vvizzgrvab
    vvizzgrvab

    汤姆与杰瑞遇见福尔摩斯

    回复 2025-04-30 04:01
  23. pwlnwbiafb
    pwlnwbiafb

    来聊聊须绪美吧

    回复 2025-04-30 04:01
  24. stjouisgqz
    stjouisgqz

    好人寥寥

    回复 2025-05-04 22:39
  25. sncqspwgsd
    sncqspwgsd

    的士判官

    回复 2025-05-04 22:41
  26. nugbzqvfhp
    nugbzqvfhp

    邪恶之城

    回复 2025-05-04 22:41
  27. wxchsgrjyl
    wxchsgrjyl

    c++教程

    回复 2025-05-04 22:43
  28. ibjvtrcafr
    ibjvtrcafr

    快乐假期

    回复 2025-05-04 22:43
  29. mlvaepjamp
    mlvaepjamp

    柠檬糖的魔法

    回复 2025-05-04 22:44
  30. fyofdobwfo
    fyofdobwfo

    哥斯拉

    回复 2025-05-04 22:45
  31. sjdxomqalj
    sjdxomqalj

    暗夜女妖

    回复 2025-05-04 22:45
  32. kvngymxifg
    kvngymxifg

    或者乌托邦

    回复 2025-05-04 22:46
  33. lsmrmabpez
    lsmrmabpez

    悟空传

    回复 2025-05-04 22:47
  34. kadbjupddt
    kadbjupddt

    亚马逊弓箭高手

    回复 2025-05-04 22:46
  35. oqcaaeswdp
    oqcaaeswdp

    明日歌

    回复 2025-05-04 22:47
  36. jyggbptnvj
    jyggbptnvj

    人生大事

    回复 2025-05-04 22:48
  37. spzxpvzjgz
    spzxpvzjgz

    东北虎

    回复 2025-05-04 22:48
  38. ivpjkvgcgi
    ivpjkvgcgi

    引爆者

    回复 2025-05-04 22:48
  39. jqlviwrfvy
    jqlviwrfvy

    秦岭诡事之守护者

    回复 2025-05-04 22:48
  40. uuazaswalz
    uuazaswalz

    女儿国前传

    回复 2025-05-04 22:49
  41. uapobjdlmp
    uapobjdlmp

    扭曲的奉献

    回复 2025-05-04 22:49
  42. fokwhemmjb
    fokwhemmjb

    女拳皇

    回复 2025-05-04 22:49
  43. xqwydrslfh
    xqwydrslfh

    阿努贾

    回复 2025-05-04 22:49
  44. wxojywqkhf
    wxojywqkhf

    灰色蝴蝶

    回复 2025-05-04 22:50
  45. zryefaupdf
    zryefaupdf

    关于琼

    回复 2025-05-04 22:51
  46. birimaoigx
    birimaoigx

    她想要什么圣诞礼物

    回复 2025-05-04 22:51
  47. sofwkvdqdx
    sofwkvdqdx

    贝茨先生与邮局真实的故事

    回复 2025-05-04 22:51
  48. sticglvsgr
    sticglvsgr

    亚瑟的威士忌

    回复 2025-05-04 22:52
  49. zhgerbzxlh
    zhgerbzxlh

    环游地球八十天

    回复 2025-05-04 22:52
  50. uebtqfsqvs
    uebtqfsqvs

    或者乌托邦

    回复 2025-05-04 22:53
  51. qelaloenqd
    qelaloenqd

    房子里的陌生人

    回复 2025-05-04 22:54
  52. whtjclbgvi
    whtjclbgvi

    乔治湖

    回复 2025-05-04 22:54
  53. itdmqovzgm
    itdmqovzgm

    暗潮汹涌之惊魂12小时

    回复 2025-05-04 22:54
  54. qisrocjnay
    qisrocjnay

    热血燃烧

    回复 2025-05-04 22:55
  55. prrpmbosfh
    prrpmbosfh

    马1956

    回复 2025-05-04 22:55
  56. vetngzplek
    vetngzplek

    星际迷航31区

    回复 2025-05-04 22:56
  57. uhycbccblx
    uhycbccblx

    武林足球

    回复 2025-05-04 22:57
  58. paolgvxfaw
    paolgvxfaw

    残酷真相

    回复 2025-05-04 22:58
召唤看板娘