二维数组元素指针引用

1.定义
2.数组指针和指针数组的区别

1.二维数组可以理解为是一个一维数组,不过每个数组元素又是一个一维数组
int a[2][3]={{1,2,3},{4,5,6}};
可以理解为,二维数组只有两个元素,即a[0]和a[1],只不过元素类型为一维数组
指向二维数组的指针(行指针)
格式:类型 (*指针名) [N]
N为数组的第二维长度

2.二维数组指针与指针型数组的区别

int a[][3] = { {1,2,3},{4,5,6} };

int *p0[3] = a;    //错误,将一个二维数组赋给指针型数组
int(*p1)[3] = a;   //正确

数组指针(也称行指针)
定义 int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。

如要将**二维数组**赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][  ]

比如要表示数组中i行j列一个元素:

*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]

优先级:()>[]>*
出处:
https://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html

3.实现一个3*4阶矩阵转置 指针为形参

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
//定义一个3行4列的二维数组arr。
//定义一个函数func()完成矩阵转置,以数组指针作为参数。
//在func()函数内部,使用for循环完成矩阵转置
void func(int(*pa)[4], int(*pb)[3], int x, int y)
{int i, j;/*-------------------------begin------------------*/for(i=0;i<x;i++)for(j=0;j<y;j++){         *(pb[j]+i)=*(pa[i]+j);// *(*(pb+j)+i)=*(*(pa+i)+j);// pb[j][i]=pa[i][j];// (*(pb+j))[i]=(*(pa+i))[j];}/*--------------------------end-------------------*/printf("转置:\n");for (i = 0; i < y; i++){for (j = 0; j < x; j++){printf("%d\t", pb[i][j]);}printf("\n");}
}
int main()
{int i, j;int arr[3][4], brr[4][3];printf("输入二维数组的元素:\n");for (i = 0; i < 3; i++){for (j = 0; j < 4; j++){scanf("%d", &arr[i][j]);}}func(arr,brr,3,4);return 0;
}


另有:

数组元素访问 方法总结

指针 二维数组元素引用相关推荐

  1. 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...

    例33:有一个3*4的二维数组,要求用C语言实现指向元素的指针变量输出二维数组个元素的值. 解题思路:二维数组的元素时整型的,它相当于整型变量,可以用int*型指针变量指向它.二维数组的元素在内存中是 ...

  2. 3 5的二维数组C语言程序,C语言及程序设计提高例程-33 二维数组元素的引用

    贺老师教学链接  C语言及程序设计提高 本课讲解 输入输出二维数组元素 #include int main() { int s[3][5], i, j; printf("Input 3*5 ...

  3. C语言 指针+二维数组详解 (应付期末、考研的最强笔记,建议收藏)

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

  4. C语言一维/二维数组解引用难理解点以及一道难题

    C语言指针相关的坑爹题 先来一点简单的 求下面各代码打印结果(32位环境): int a[3][4] = {0}; printf("%d\n",sizeof(a)); printf ...

  5. C语言二维数组元素的多种表示方法小结

    C语言二维数组元素的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值.其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小 ...

  6. php 数组元素往后移动,php 二维数组 元素移动

    [已关闭问题] 关闭于 2014-11-20 16:02 二维数组元素如何实现,满足一定的条件,跳到下下个元素,不满足的话,顺序执行呢? 比如: header("Content-type:t ...

  7. C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)

    1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...

  8. 编写一个函数get_average()获取整型数组元素的平均值。要求这个函数既可以用来求一维数组元素的平均值,也可以求二维数组元素的平均值。

    题目内容: 编写一个函数get_average()获取整型数组元素的平均值.要求这个函数既可以用来求一维数组元素的平均值,也可以求二维数组元素的平均值.在main()函数中通过具体的一维数组Array ...

  9. 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。

    编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推.     例如,原始二维数组为,逆向存放后变为.试建立一个类 ...

最新文章

  1. 张一鸣宣布卸任字节CEO!网友:完不成OKR被优化了!
  2. AI在这张“问卷”上首次超越人类,SuperGLUE被微软谷歌两家“攻破”
  3. 21.等值线图(Counter Plot)、Contour Demo、Creating a “meshgrid”、Calculation of the Values、等
  4. 【转】ROWNUM与ORDER BY先后关系
  5. LeetCode:Add Two Numbers
  6. redis 哨兵模式 cluster模式区别_Redis哨兵(Sentinel)模式快速入门
  7. 模拟纳指stock的小例子
  8. go TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body.
  9. 给大家安利一个买电脑好去处(内有福利)
  10. Runloop与autoreleasePool联系
  11. matlab:绘制box函数和高斯函数曲线并进行傅里叶变换
  12. Git问题解决方案:Pulling without specifying how to reconcile divergent branches
  13. PLC系统的选型以及应用方法
  14. 奥维使用天地图 疑似攻击解决方案、访问上限解决方案
  15. JMeter之BeanShell的变量使用方法
  16. 3. Kubernetes资源-概述
  17. 一个可以免费下载表情包的小程序
  18. Linux文件目录操作命令-mkdir命令
  19. 合肥python培训价格
  20. WIN10无法连接共享文件夹(文件处于共享状态,但未对检测到的连接做出响应)

热门文章

  1. 《穷查理宝典:查理·芒格智慧箴言录》读书笔记
  2. mysql优化(添加索引)
  3. 计算机网络sp,网络信号电涌保护器(sp-005dc10-rj45) Network signal surge protector (sp-005dc10-rj45)...
  4. 数据库课程表东南大学
  5. 乐华娱乐欲重返上市:毛利率走低,上半年利润下滑,韩庚为股东
  6. Mybatis的时间范围查询
  7. PTA L2-1 点赞狂魔
  8. Flash Builder 4.7 注册机完美激活方法
  9. 在计算机中输入输出系统的作用是什么,计算机主板上BIOS(基本输入输出系统)的作用是什么?...
  10. srm系统采购信息助力建筑安装行业