运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

C语言的多级指针你了解吗

运维开发网 https://www.qedev.com 2021-08-27 11:14 出处:网络 作者: 宝全哥哥
目录前言一、多级指针概念二、多级指针的使用1.二维指针总结前言 自学笔记,没有历史知识铺垫(省略百度部分)C语言了解多级指针的使用
目录
  • 前言
  • 一、多级指针概念
  • 二、多级指针的使用
    • 1.二维指针
  • 总结

    前言

    自学笔记,没有历史知识铺垫(省略百度部分)C语言了解多级指针的使用

    一、多级指针概念

    指向指针的指针

    即:存放地址的地址

    int **p;

    多级指针可以将内存上毫无关系的多组数据,产生关系(线性操作数据)

    二、多级指针的使用

    1.二维指针

    二维指针示例,此处以系统入口main函数示例1 通过argc提供的数量做循环

    int main(int argc,char **argv)
    {
        for (int i = 0;http://www.cppcns.com i < argc; i++)
        {
                printf("argv[%d]=%s \n",i,argv[i]);
        }
        return 0;
    }
    
    $ gcc -o main main.c
    $ ./main staging myname mypasswwww.cppcns.comord
    argv[0]=./main 
    argv[1]=staging 
    argv[2]=myname 
    argv[3]=mypassword 
    

    main函数中读取传入的二维指针示例2 仅通过二维指针做判断

    int maLwcEQUin(int argc,char **argv)
    {
        int i = 0;
        while (argv[i]!=NULL)
        {
           printf("argv[%d]=%s \n",i,argv[i]);
           i++;编程客栈
        }
        return 0;
    }
    

    可以使用NULL或者0x0作为多级指针是否读取完毕的标识,效果一致

    $ gcc -o main main.c
    $ ./main staging myname mypassword
    argv[0]=./main 
    argv[1]=staging 
    argv[2]=myname 
    argv[3]=mypLwcEQUassword 
    

    二维指针的创建

    int main()
    {
        char **a;
        char a1 = 1;
        char a2 = 2;
        char a3 = 3;
        a[0] = &a1;
        a[1] = &a2;
        a[2] = &a3;
        //a[0]:1,a[1]:2,a[2]:3
        printf("a[0]:%d,a[1]:%d,a[2]:%d", a[0][0], *a[1], *a[2]);
        return 0;
    }
    
        char *a[5];
        char a1 = 1;
        char a2 = 2;
        char a3 = 3;
        a[0] = &a1;
        a[1] = &a2;
        a[2] = &a3;
        //a[0]:1,a[1]:2,a[2]:3
        printf("a[0]:%d,a[1]:%d,a[2]:%d", a[0][0], *a[1], *a[2]);
        return 0;
    

    以上两种方案效果一致

    注意:

    二维指针与数组的概念非常类似,如上char **a;和char a[]的作用相似二维指针的读取方法a[0][0]或者*a[0]都可以,前者是二维指针下标,a[0]等同于*a

    总结

    本章主要为C语言了解多级指针的使用

    扫码领视频副本.gif

    0

    上一篇:

    没有了:下一篇

    精彩评论

    暂无评论...
    验证码 换一张
    取 消