• 通过代码加解析的方式带领大家分析 :数组与指针的关系


    通过代码加解析的方式带领大家分析 :数组与指针的关系

    指针——数组

    对于指针,数组,大家到目前为止,大多已经有了详细的了解与认识,并且能够正确的连立起来指针与数组的应用!这一点是非常重要的也是没有办法来取吸取经验的,这就依靠我们多多寻找练习题来刷,毕竟一个好的工程师,没有大量的代码,怎能成就??

    对于数组与指针的简单应用场景,笔者仍旧按照代码加解析的方法来涉及!

    下面请看笔者的简单代码:通过指针来打印数组元素!(1)

    1. //通过指针来打印数组元素
    2. #include
    3. int main()
    4. {
    5. int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    6. int* p = arr;
    7. int i = 0;
    8. int sz = sizeof(arr) / sizeof(arr[0]);
    9. for (i = 0; i < sz; i++)
    10. {
    11. printf("%d ", *p);
    12. p++;
    13. }
    14. return 0;
    15. }

    在上述代码中,定义了一个int类型的指针p,而且p指向数组arr ,而且数组名arr指的是数组首元素的地址! 假设,我们不知道该数组元素的大小,当然对于简短的数组我们可以去手动来查,但是对于几百几千的数组元素我们也是用手动来查数字蛮??这样的做法累不死人来还!这边还没有查出来整个数组元素的大小,而且竞争者已经将整个代码书写好,并且运行出来得出结果了,这样的对手跟猪一样的队友!优恶自见!因此,我们需要知道,并且正确运用sizeof的去求数组的大小;但是对于字符串,就用库函数strlen()来进行求字符串长度(专用)!

    1. for (i = 0; i < sz; i++)
    2. {
    3. printf("%d ", *p);
    4. p++;
    5. }

    下面进行对数组元素的打印!通过对   : i = 0; i < sz; i++   每次循环的应用,循环sz次,每一次都执行:printf("%d ", *p);       p++;    在这里用了“*”(解引用操作符)目的是通过数组首元素的地址arr逐步找到整个数组,并且打印出来!p++  :是指,每次都往后走一步,去找到下一个数表的元素!

    最后的打印结果为:

     

    上述内容仅仅 是通过指针来打印数组的一种简单方法,下面请看笔者的第二种通过指针打印数组的方法!

    下面请看笔者的简单代码:通过指针来打印数组元素!(2)

    1. //通过指针来打印数组元素
    2. #include
    3. int main()
    4. {
    5. int arr[] = { 10,9,8,7,6,5,4,3,2,1,0 };
    6. int* p = arr;
    7. int i = 0;
    8. int sz = sizeof(arr) / sizeof(arr[0]);
    9. for (i = 0; i < sz; i++)
    10. {
    11. printf("%d ", *(p + i));
    12. }
    13. return 0;
    14. }

    在上述带段代码中,笔者仅仅是更改了部分代码,并且更改了数组元素,害拍再用上次代码运行后的结果,紧急避嫌!

    在这段代码里面,其实主要更改的内容还是for循环里面的代码!

    1. for (i = 0; i < sz; i++)
    2. {
    3. printf("%d ", *(p + i));
    4. }

    每一次的循环都从数组arr(数组的首元素)开始,往后走i步,然后在通过对(p+i)  位置的数组元素来进行“*”解引用,因此可以打印出来该整个数组元素!

    最后的打印结果为:

     通过上述代码,笔者简单的总结下了下面几个数组与指针的关系!

    数组与指针的不同:

    1.数组与指针不是一个东西!

    2.数组能够存放一组数(一段连续的空间),数组的大小取决于元素个数!

    3.指针是一个变量,是用来存放地址的(4或8个字节)

    数组与指针的联系:

    1.数组名是地址(指针)!

    2.数组把首元素的地址,交给一个指针变量后,可以通过指针来访问数组!

    本文到此就已经将笔者想要表达的内容,已经大致覆盖,对于该文,笔者若有不同的意见,请及时联系笔者进行更改!

  • 相关阅读:
    图论04-【无权无向】-图的广度优先遍历
    HTTPS 一定安全可靠吗?
    Element UI上传图片和PDF,支持预览
    java计算机毕业设计基于springboo+vue的疫情社区防控系统
    2.2.2 redis、memcached、nginx 网络组件
    一周入门Python之day04
    Linux chmod命令使用介绍
    centos下Mysql的安装(离线)
    【OpenVINO】行人摔倒检测 — 基于 OpenVINO C# API 部署PP-Human-下篇
    SpringBoot整合Spring Security【超详细教程】
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/126258931