12深入理解C指针之---指针多层间接引用

本文探讨了C语言中指针的多层引用概念及其应用,包括不同类型的指针和字符数组如何实现多层引用,同时展示了主函数中参数的各种用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。

  一、指针多层引用

    1、定义:指针可以用不同的间接引用层级,通常使用多重指针或字符数组来实现

    2、特征:

      1)、使用二重字符指针表示

      2)、使用字符数组表示

      3)、使用多重字符指针表示

    3、应用:

      1)、主函数中char **argc参数用法

      2)、主函数中char *argc[]参数用法

      3)、二重指针char  **arrName[]用法

  代码如下:1)、主函数中char **argc参数用法

 1 /* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
 2   * 作者代号: *** :guochaoxxl
 3   * 版权声明: *** :(魎魍魅魑)GPL3
 4   * 联络信箱: *** :guochaoxxl@gmail.com
 5   * 文档用途: *** :深入理解C指针
 6   * 文档信息: *** :~/WORKM/StudyCode/CodeStudy/cnblogs_understanding_and_using_c_pointers/chapter1/test05.c
 7   * 修订时间: *** :2017年第39周 10月01日 星期日 上午08:56 (274天)
 8   * 代码说明: *** :演示char **argv用法
 9  * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+*/
10 #include <stdio.h>
11
12 int main(int argc, char **argv)
13 {
14     for(int i = 0; i < argc; i++){
15         printf("The main argument %d is %s\n", i, *(argv + i));
16     }
17     printf("\n");
18
19     return 0;
20 }

  2)、主函数中char *argc[]参数用法

 1 /* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
 2   * 作者代号: *** :guochaoxxl
 3   * 版权声明: *** :(魎魍魅魑)GPL3
 4   * 联络信箱: *** :guochaoxxl@gmail.com
 5   * 文档用途: *** :深入理解C指针
 6   * 文档信息: *** :~/WORKM/StudyCode/CodeStudy/cnblogs_understanding_and_using_c_pointers/chapter1/test05.c
 7   * 修订时间: *** :2017年第39周 10月01日 星期日 上午08:56 (274天)
 8   * 代码说明: *** :演示char *argv[]用法
 9  * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+*/
10 #include <stdio.h>
11
12 int main(int argc, char *argv[])
13 {
14     for(int i = 0; i < argc; i++){
15         printf("The main argument %d is %s\n", i, argv[i]);
16     }
17     printf("\n");
18
19     return 0;
20 }

  3)、二重指针char  **arrName[]用法

 1 /* *=+=+=+=+* *** *=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
 2   * 作者代号: *** :guochaoxxl
 3   * 版权声明: *** :(魎魍魅魑)GPL3
 4   * 联络信箱: *** :guochaoxxl@gmail.com
 5   * 文档用途: *** :深入理解C指针
 6   * 文档信息: *** :~/WORKM/StudyCode/CodeStudy/cnblogs_understanding_and_using_c_pointers/chapter1/test07.c
 7   * 修订时间: *** :2017年第39周 10月01日 星期日 上午09:26 (274天)
 8   * 代码说明: *** :演示char **bestBooks[3]的用法
 9  * *+=+=+=+=* *** *+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+*/
10 #include <stdio.h>
11
12 int main(int argc, char **argv)
13 {
14     //定义书名的数组
15     char *titles[] = {"A Tale of Two Cities",
16         "Wuthering Heights",
17         "Don Quixote",
18         "Odyssey",
19         "Moby-Dick",
20         "Hamlet",
21         "Gulliver's Travels",
22     };
23     char **bestBooks[3];                                    //最好的图书
24     char **englishBooks[4];                                 //英文图书
25
26     bestBooks[0] = &titles[0];
27     bestBooks[1] = &titles[3];
28     bestBooks[2] = &titles[5];
29
30     englishBooks[0] = &titles[0];
31     englishBooks[1] = &titles[1];
32     englishBooks[2] = &titles[5];
33     englishBooks[3] = &titles[6];
34
35     for(int i = 0; i < 3; i++){
36         printf("The bestBooks is: %s\n", *bestBooks[i]);
37     }
38     printf("\n");
39     for(int j = 0; j < 4; j++){
40         printf("The englishBooks is: %s\n", *englishBooks[j]);
41     }
42
43     return 0;
44 }

  代码都很简单,自行理解即可。

转载于:https://www.cnblogs.com/guochaoxxl/p/6956518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值