• 浅谈指针数组


    笔者断断续续的停更了几日,望着那么多的存稿,感觉不发出来对不起关注的读者!思前想后,还是决定写些博客发出来,与大家共勉!

    上次笔者的博客还是对:字符指针进行讲解!有意者请看笔者博客:参考链接为:字符指针的进阶_念君思宁的博客-CSDN博客

    下面请看笔者对于进阶字符指针的详解!

    1. int* arr1[10]; //整型指针的数组
    2. char* arr2[2]; //一级字符指针的数组
    3. char** arr3[5]; //二级字符指针的数组

    上面的两个字符指针的数组,是由整型指针的数组借鉴而来!

    下面请看代码,笔者用代码+解析的方式来带领大家理解!

    1. #include <stdio.h>
    2. int main()
    3. {
    4. char* arr[5] = { "zhangsan","lisi","wangwu","hehe","ruhu" };
    5. int i = 0;
    6. for (i = 0; i < 5; i++)
    7. {
    8. printf("%s\n", arr[i]);
    9. }
    10. return 0;
    11. }

    在上述代码段中,笔者定义了: char* arr[5];类型的存放指针的数组,然后通过printf函数每次都打印出来!

    但是,这里用了原先打印数组的方式来打印,并不是笔者创造该博客的所想思想!

    所以将printf函数里面的内容进行简单更改为:

    printf("%s\n",*(arr+i));

    再这个代码中,读者应该也能看懂,毕竟这个是指针的入门知识!

    对存放字符指针的数组: char* arr[5]; 进行分解为:

    char*
    char*
    char*
    char*
    char*

    每一个char* ,都指向该元素的首字母!即:‘z' , 'l' , 'w' , 'h', 'r' 五个字母!

    该段代码段运行结果为:

     下面请看笔者所写的:指针数组的精华部分:

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int arr1[5] = { 1,2,3,4,5 };
    5. int arr2[5] = { 2,3,4,5,6 };
    6. int arr3[5] = { 3,4,5,6,7 };
    7. int* arr[3] = { arr1,arr2,arr3 };
    8. int i = 0;
    9. int j = 0;
    10. for (i = 0; i < 3; i++)
    11. {
    12. for (j = 0; j < 5; j++)
    13. {
    14. printf("%d ", arr[i][j]);
    15. }
    16. printf("\n");
    17. }
    18. return 0;
    19. }

    在上面代码中,笔者定义了三个一维数组,并且通过一个指针数组将这三个一维数组进行联立起来!int* arr[3] = { arr1,arr2,arr3 };   这个确实很难想到,毕竟很少有这样使用的方法,在此,笔者仅仅是用来模拟一下,仅供参考!

    下面是笔者在画图板上面的操作!

     在上面图片中,详细的讲解了:指针数组的简单运用过程!

    首先在for循环里面,由 i 外层循环开始变化,到 j 内层循环变化,依次找到数组!并且打印出来!最后运行结果为:

     该段内容大致已经结束,笔者对于指针数组部分,暂时先讲解到此,至于精彩部分,请看笔者后续!

  • 相关阅读:
    MongoDB聚合运算符:$divide
    ORA-01658: 无法为表空间XXX段创建 INITIAL 区
    【云原生系列】云计算概念与架构设计介绍
    RR有幻读问题吗?MVCC能否解决幻读?
    贝锐蒲公英云AP,企业WiFi功能如何使用?
    【面试经典150 | 链表】合并两个有序链表
    Docker安装运行SRS
    机组 指令系统
    njmon(nimon) + influxdb2 + grafana 系统性能监控
    4.10 x64dbg 反汇编功能的封装
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/126760910