指针可以替代数组名

1.在一维数组中:int a[9]; int *p=a;

一维数组名指向的是列!(后面总结,迷得话不用慌)

则想要获取a[i]的地址方法:a+i; 、p+i; 、p[i];

获取a[i]元素方法:*(a+i);、*(p+i);、*(p[i]);

2.在二维数组中:int a[4][9]; int (*p)[9];  p=a;  //指针变量p指向包含4个整形元素的一维数组     //*p[9]是指针数组,后续文章介绍

二维数组名指向的是行!eg:a+1;//代表指向a[1][0]的地址

则想要获取a[i][0]的地址方法:a+i; 、p+i; 、p[i];

则想要获取a[0][i]的地址方法:*a+i; 、*p+i; ;

则想要获取a[i][j]的地址方法:*(a+i)+j; 、*(p+i)+j;  、*(p[i])+j ;

则想要获取a[i][j]的元素方法:*(*(a+i)+j); 、*(*(p+i)+j);  、*(*(p[i])+j );

3.二维数组表现形式与对应地址:

二维数组难点

1.一维数组、二维数组对比:

一维数组名a指向列,a+1中的1表示向第一行的第一列后移一位,变成一行二列a[0][1];

二维数组名a指向行,a+1中的1表示向第一行下移一位,变成二行一列a[1][0];

2.二维数组指向行列变换(*、&):

a表示指向行(a[0][0]),a+1指向a[1][0];

公式:*指行 -> 指列  、 &指列 -> 指行

*a,*(a+1)指向列:*a+1=a[0][1];    、 *(a+1)+1=a[1][1];

&a[0]指向行(a[0]=a[0][0]):&a[0]+1=a[1][0];

(   a[0] 与*(a+0)等价==》&a[0] 与&*a等价 == a,指向0行   )

3. int (*p)[4]; 在一维数组和二维数组中赋值:

一维数组:p=&a;  //p指向一维数组,因为只有一列,所以:&指列->指行

(*p)[3] ==a[3];

二维数组:p=a;  //p指向二维数组的0行

 *(p[i])+j ==&a[i][j];   *(*(p[i])+j) ==a[i][j];

【C语言】指针表达进阶:指针在一维数组、二维数组的应用(如何用指针表达一维数组、二维数组的元素的地址、元素值)相关推荐

  1. [C语言简明教程] 指针的进阶(上)

    文章目录 前言 一.指针是什么? 二.指针的进阶 1. 字符指针 2.指针数组 3.数组指针 3.1数组指针定义 3.2 &数组名 和 数组名 3.3 数组指针的使用 4. 数组参数.指针参数 ...

  2. C语言——指针(进阶版)

                            目录 指针的进阶 1.字符指针 2.指针数组 3.数组指针 3.1 数组指针的定义 3.2数组指针的使用 4.动态内存分配与指向它的指针变量 4.1 什 ...

  3. c语言程序设计指针进阶,C语言及程序设计进阶例程-15 指向结构体的指针

    贺老师教学链接  C语言及程序设计进阶 本课讲解 指向结构体变量的指针的应用 #include #include struct Student { int num; char name[12]; ch ...

  4. c语言2阶数组指针,C语言的指针(进阶篇章之二)

    指针遇到数组,不得不说的"秘密" 说起数组array[i]来,我们都知道:数组名"array"是数组的唯一标识符,数组名代表数组首元素的地址. 而今天的主角-- ...

  5. [C语言简明教程] 指针的进阶(下)

    文章目录 前言 一.函数指针 二.函数指针数组 三.回调函数 总结 前言 C语言中指针的重要性是:通过指针不仅可以对数据本身,还可以对存储数据的变量地址进行操作.指针能够帮助我们快速地传递数据,减少内 ...

  6. c语言如何用指针操作一维字符数组,C语言中数组和指针的互操作

    C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减.当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有 ...

  7. C语言程序设计 | 指针的进阶(一):字符指针、数组指针、指针数组、函数指针

    指针的进阶(一)目录: 字符指针 数组指针和指针数组 函数指针 字符指针 在开始讲解这一章节之前,我们需要了解指针前面声明的类型的意义 类型 * 指针名 对于指针来说,我们在给指针进行声明时,我们声明 ...

  8. 【C语言进阶】指针(进阶2)

    目录 回顾: 数组参数.指针参数 一维数组传参 二维参数传参 一级指针传参 二级指针传参 回顾: 前面关于指针的内容我们已经学习了指针数组和数组指针我们来一起看看下面的代码的意思 int arr[5] ...

  9. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  10. 一文搞懂C语言如何用指针来代替变量和数组进行数据的存储

      众所周知,指针的用法最常见的无外乎两种,一种是用指针来指向变量的内存地址,通过操控指针进而可以间接的操控变量.另外一种是把指针当成变量来使用,像变量一样可以存储数据.数组也是类似的道理,因为数组实 ...

最新文章

  1. php对连接加密后传,PHP 加密解密和解决URL传输问题
  2. 初学python还是swift-请问零基础学习python 和swift哪个更好入门呢?
  3. 功能测试工作的一点总结
  4. RabbitMQ入门-环境搭建
  5. 网管型工业交换机和 非网管型工业交换机的优缺点
  6. java断点续传插件_视频断点续传+java视频
  7. java 计算器类图_多态计算器(封装、继承、多态、简单工厂)
  8. 【Python】Python中的引用和赋值
  9. SQLite内部机制和新特性
  10. 蜘蛛日志分析工具_如何分析蜘蛛日志?
  11. JavaScript 颜色梯度和渐变效果
  12. 查看局域网内所有ip 和 mac
  13. Kubernetes 小白学习笔记(6)--kubernetes的架构与组件-Master组件
  14. 【小程序合集】来一组适合你的表情包-表情包大全
  15. chrome浏览器导出扩展_每日新闻摘要:再次跟踪您的浏览历史记录的Google Chrome浏览器扩展...
  16. 高中信息技术python及答案_(完整)高中信息技术《Python语言》模块试卷
  17. vue对table的某一行的数据进行编辑,删除,查看详情操作
  18. centos下的umask值的更改
  19. 生物信息学在感染和疫苗研究中的应用
  20. 霍尼韦尔和西安开米深入合作;中国采购行业出现W形复苏迹象 | 美通企业日报...

热门文章

  1. hooks 使用dva_Tarodemo
  2. 记账本设置密码,账目不被修改
  3. 思维工具2: Reversal
  4. linux照明控制软件,基于ARM-Linux的城市景观照明控制平台设计
  5. UVA 516 Prime Land
  6. 计算机二级数据库mysql题库_全国计算机二级mysql数据库模拟试题
  7. windows agda
  8. vue+MathJax 显示数学公式
  9. java对接顺丰(丰桥)官方接口查询物流附小程序物流模板
  10. go 发送nats消息提示no response from stream