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

 更新时间:2021年08月26日 16:02:35   作者:宝全哥哥  
这篇文章主要介绍了C语言中的多级指针,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助

前言

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

一、多级指针概念

指向指针的指针
即:存放地址的地址
int **p;

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

二、多级指针的使用

1.二维指针

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

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

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

int main(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]=mypassword 

二维指针的创建

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语言了解多级指针的使用

相关文章

  • C++实现LRU缓存的操作方法

    C++实现LRU缓存的操作方法

    LRU是一种常用的缓存淘汰策略,主要目的是在缓存空间有限的情况下,优先淘汰那些最长时间没有被访问的数据项,这篇文章主要介绍了C++实现LRU缓存,需要的朋友可以参考下
    2024-07-07
  • 关于C/C++中typedef的定义与用法总结

    关于C/C++中typedef的定义与用法总结

    在C还是C++代码中,typedef都使用的很多,在C代码中尤其是多,typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,需要的朋友可以参考下
    2012-12-12
  • 关于Qt C++中connect的几种写法代码示例

    关于Qt C++中connect的几种写法代码示例

    这篇文章介绍了Qt中connect函数的不同编写方式,包括传统的槽函数写法、使用函数指针的写法、Lambda表达式以及使用QOverload选择重载信号的写法,每种写法都有其特点和适用场景,程序员应根据具体需求选择最合适的方式,需要的朋友可以参考下
    2024-11-11
  • C++ 关于 CMFCPropertyGridCtrl 的使用方法

    C++ 关于 CMFCPropertyGridCtrl 的使用方法

    这篇文章主要介绍了C++ 关于 CMFCPropertyGridCtrl 的使用方法的相关资料,需要的朋友可以参考下
    2015-06-06
  • C语言实现简单的贪吃蛇游戏

    C语言实现简单的贪吃蛇游戏

    这篇文章主要为大家详细介绍了C语言实现简单的贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • c++函数指针和回调函数示例

    c++函数指针和回调函数示例

    这篇文章主要介绍了c++函数指针和回调函数示例,需要的朋友可以参考下
    2014-05-05
  • C++数据结构之链表详解

    C++数据结构之链表详解

    这篇文章主要介绍了C++数据结构之链表的创建的相关资料,希望通过本文帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2021-08-08
  • C语言实现财务管理系统

    C语言实现财务管理系统

    这篇文章主要为大家详细介绍了C语言实现财务管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • c++项目中后缀名vcxproj和sln的区别及说明

    c++项目中后缀名vcxproj和sln的区别及说明

    这篇文章主要介绍了c++项目中后缀名vcxproj和sln的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • C++赋值函数+移动赋值函数+移动构造函数详解

    C++赋值函数+移动赋值函数+移动构造函数详解

    这篇文章主要介绍了C++赋值函数+移动赋值函数+移动构造函数详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论