VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 946|回复: 0

[交流] C学习之路的点滴记录---基础指针数组--大牛飘过

[复制链接]
13_avatar_middle
最佳答案
1 
在线会员 发表于 2021-5-11 12:41:01 | 显示全部楼层 |阅读模式
本帖最后由 小白学编程 于 2021-5-11 13:07 编辑

指针数组
  1. int main()
  2. {
  3.         int a = 10;
  4.         int b = 20;
  5.         int c = 30;
  6.         char* arr[3] = { &a,&b,&c };
  7.         for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
  8.         {
  9.                 printf("%d \n",*arr[i]);
  10.         }

  11.         printf("指针数组大小%d \n", sizeof(arr));
  12.         printf("指针元素大小%d \n", sizeof(arr[0]));
  13.         return EXIT_SUCCESS;
  14. }
复制代码


输出结果
10
20
30
指针数组大小1
指针元素大小4
  1.         int a[] = { 1,2,3 };
  2.         int b[] = { 4,5,6 };
  3.         int c[] = { 7,8,9 };
  4.         int* arr[] = { a,b,c };
  5.         for(int i = 0; i < 3;i++ )
  6.         {
  7.                 printf("%d\n", *arr[i]);
  8.         }
  9.         for (int i=0;i<3;i++)
  10.         {
  11.                 for (int j=0;j<3;j++)
  12.                 {
  13.                         printf("%d", arr[i][j]);
  14.                 }
  15.                 printf("\n");
  16.         }
  17.         return EXIT_SUCCESS;
  18. }
复制代码


读取指针数组元素
       int a[] = { 1,2,3 };
        int b[] = { 4,5,6 };
        int c[] = { 7,8,9 };
        int* arr[] = { a,b,c };
        printf("%p \n", arr);//读取数组的首地址
        printf("%d \n", a[1]); //下标索引为0开始,读取元素下标第一行第2个元素
        printf("%d \n", arr[0][1]);//下标索引为0开始,读取元素下标第一行第2个元素
        printf("%d \n", arr[1][0]);//下标索引为0开始,读取元素下标第二行第1个元素
        printf("%d \n", arr[2][0]);//下标索引为0开始,读取元素下标第三行第1个元素
        printf("%d \n", *(a +1));//指针指向数组第一行第一个元素
        printf("%d \n", *arr[2]);//指针指向数组第三行第一个元素

  1. int a[] = { 1,2,3 };
  2.         int b[] = { 4,5,6 };
  3.         int c[] = { 7,8,9 };
  4.         int* arr[] = { a,b,c };
  5. for (int i=0;i<3;i++)
  6.         {
  7.                 for (int j=0;j<3;j++)
  8.                 {
  9.                         //printf("%d ", arr[i][j]);
  10.                         //printf("%d ", *(arr[i] + j));
  11.                         printf("%d ", *(*(arr + i) + j));
  12.                 }
  13.         }
复制代码


多级指针
int a[] = { 1,2,3 };
        int b[] = { 4,5,6 };
        int c[] = { 7,8,9 };
        int* arr[] = { a,b,c };
        //指针数组是一个特殊的二维数组模型
        //指针数组和二级指针建立关系
        int** p = arr;
        printf("%d \n", **p);        //对应的是p[0][0]


  1. int a[] = { 1,2,3 };
  2.         int b[] = { 4,5,6 };
  3.         int c[] = { 7,8,9 };
  4.         int* arr[] = { a,b,c };
  5.         //指针数组是一个特殊的二维数组模型
  6.         //指针数组和二级指针建立关系
  7.         int** p = arr;
  8.         //printf("%d \n", **p);        //对应的是arr[0][0]--a[0]
  9.         //printf("%d \n", **(p + 1));//读取第二行第一个元素
  10.         //printf("%d \n", *(p + 1));//一级指针加偏移量相当于跳过了一个元素
  11.                 //printf("%d \n", *(*p + 1));//arr[0][1]
  12.         printf("%d \n", *(*(p + 1) + 1));//读取第二行第二个元素
  13.         for (int i=0;i<3;i++)
  14.         {
  15.                 for (int j=0;j<3;j++)
  16.                 {
  17.                         printf("%d ", p[i][j]);
  18.                         printf("%d ", *(p[i] + j));
  19.                         printf("%d ", *(p + i) + j);
  20.                 }
  21.         }
复制代码


       int a = 10;
        int b = 20;
        int* p = &a;
        int** pp = &p;
        int***ppp = &pp;
        *ppp == pp == &p;
        **ppp == *pp == p == &a;
        ***ppp == **pp == *p == a;

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分





上一篇:C语言网编程练习普及题
下一篇:C学习之路的点滴记录--字符串操作函数
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-11 12:10

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表