当前位置: 首页 > news >正文

指针和数组(二)

#include <stdio.h>
int main ()
{
int a[2][3] = {1,2,3,4,5,6};//int* p3 = a; // 当前虽能正常运行,但是不能这样使用,毕竟类型级别不相同int* p1 = a[0]; // a[0] == *(a+0) 第0行的首地址int* p2 = a[1]; // a[1] == *(a+1) 第1行的首地址int i, j;for (i = 0; i < 2; i++) // 行{for (j = 0; j < 3; j++) // 列{//printf("%d ", a[i][j]);//printf("%d ", p3[j]);}printf("\n");}
return 0;
}

展示结果:

代码:

#include <stdio.h>
int main()
{int a[2][3] = { 1,2,3,4,5,6 };int* p1 = a[0];int* p2 = a[1];int** ptr = &p1;*(ptr + 1) = p2;int i, j;for (i = 0; i < 2; i++) // 行{for (j = 0; j < 3; j++) // 列{printf("%d ", ptr[i][j]);}printf("\n");}return 0;
}

效果展示:

// 典型应用场景:
//     1、操作多个字符串时
//     2、管理多个堆内存时
// 字符串数组,实际就是一个指针数组
char* str[] = {"1234567", "4567890", "7890123"};

#include <stdio.h>
int main()
{
// arr也是指针数组int a[] = {1, 2, 3};int b[] = {4, 5, 6};int c[] = {7, 8, 9};int* arr[] = {a, b, c};int** ptr = str;    // 这种方式不合理//int** ptr = arr;  // 虽能输出数据,但也不合理int i, j;for (i = 0; i < 3; i++) // 行{for (j = 0; j < 3; j++) // 列{printf("%c", ptr[i][j]);}printf("\n");}  
return 0;
}

效果展示:

数组指针应用案例:

 #include <stdio.h>
int main()
{int (*ptr)[3] = a; // ptr指向的是行首地址printf("&a     = %p\n", &a);        // 整个二维数组的起始地址printf("&a+1   = %p\n\n", &a+1);    // 整个二维数组的起始地址,偏移整个数组24字节printf("a      = %p\n", a);         // 数组的起始地址printf("a+1    = %p\n\n", a+1);     // 数组的起始地址,偏移一行12字节printf("a[0]   = %p\n", a[0]);      // 第0行的起始地址printf("a[0]+1 = %p\n\n", a[0]+1);  // 第0行的起始地址,偏移一个元素4字节printf("ptr    = %p\n", ptr);       // ptr指向了行首地址printf("ptr+1  = %p\n\n", ptr+1);   // ptr+1 == a+1, 偏移一行12字节//int i, j;//for (i = 0; i < 2; i++) // 行//{//    for (j = 0; j < 3; j++) // 列//    {//        //printf("%d ", a[i][j]);//        printf("%d ", ptr[i][j]);//    }//    printf("\n");//}  
return 0;
}

// a即代表数组首地址,也代表第0行的首地址,同时也是第一个元素的首地址
int a[2][3] = {1, 2, 3, 4, 5, 6};

    // 典型应用场景
//      1、二维数组在进行函数传参时,行参需要使用数组指针
//      2、在操作矩阵数据时,使用数组指针

http://www.dtcms.com/a/279888.html

相关文章:

  • AI 临床医学课题【总结】
  • Vue2 day08-10(智慧商城)
  • 应用系统报错:com.highgo.jdbc.util.PSQLException:bad value for long(APP)
  • DOM事件绑定时机:解决脚本提前加载导致的绑定失败
  • git modules
  • 8.6 Rag-基础工具介绍(开源工具)
  • 5、qt系统相关
  • 面试150 根节点到叶子节点数字之和
  • 机构参与度及其Python数据获取示例
  • SVD、DCT图像压缩实践
  • 020 实现一个简易 Shell
  • Java集合和字符串
  • JVM-1
  • 现场设备无法向视频汇聚EasyCVR视频融合平台推流的原因排查与解决过程
  • 常用的OTP语音芯片有哪些?
  • Gstreamer之”pad-added“事件
  • cron监控进程逻辑
  • C#中发布订阅的阻塞非阻塞
  • 微美全息借区块链与DRL算法打造资源管理协同架构,达成边缘计算与区块链动态适配
  • Function-——函数中文翻译渊源及历史背景
  • 学习笔记(35):了解原理:从密度到了解概率密度
  • iperf3 网络带宽测试工具学习
  • 国内隧道IP代理技术解析:原理、优势与实战应用
  • 网络地址转换(NAT)与单臂路由实验
  • 2.逻辑回归、Softmax回归
  • 智能节气装置
  • 记录网络切换时同步操作
  • TypeScript 配置全解析:tsconfig.json、tsconfig.app.json 与 tsconfig.node.json 的深度指南
  • JJ20 Final Lap演唱会纪念票根生成工具
  • 信息收集的基本流程