<24>【掌握】二维数组指针定义、初始化+

【掌握】二维数组指针定义、初始化

数组指针:

    定义一个指针变量,让这个指针变量指向一维数组的元素

 二维数组指针

     行指针,用来指向二维数组的每一行,存放的是行的首地址

     定义格式:  数据类型  (*行指针变量名)[数组第二维的长度];

 二维数组指针的初始化

   int a[2][3];
   int b[2][2];
   float f1[4][4];

   //假设我要定义一个指向数组a的一个行指针
   // a  = &a[0]  = &a[0][0]  = a[0]
   int (*p)[3] = a;

  二维数组指针的使用

    *(*(p+i)+j)  //就是获取二维数组的每个元素
 
 1 #include <stdio.h>
 2
 3 int main(int argc, const char * argv[]) {
 4     int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
 5
 6     //二维数组指针
 7     //二维数组指针可以替代数组名去使用
 8     int (*p)[4] = a;
 9
10     for (int i=0; i<3; i++) {
11         for (int j=0; j<4; j++) {
12             //遍历数组
13             printf("%d\t",*(*(p+i)+j));   //如果是*(*(a+i)+j)可以,因为其是常量,相当于取地址但是你上面 int *p=a;
14         }                                 //这时候下面*(*(p+i)+j)就会报错,因为此时p是一个变量,你*就是取值,定义二维数组指针应该就是解决这个问题
 15 printf("\n"); 16  } 17 18 return 0; 19 }
1    3    5    7
9    11    13    15
17    19    21    23    
时间: 2024-10-06 11:23:09

<24>【掌握】二维数组指针定义、初始化+的相关文章

关于返回二维数组指针问题

所谓的二维数组指针,是指针的指针,指的就是二维数组在内存中的存储地址. 二维数组的地址与一维数组的地址的不同点是:它除了有元素地址外,还有标识各行起始位置的行首地址(称为行的首地址).行的首地址和行的首元素的地址具有相同的地址值,但是它们是两种不同的地址:若有定义int a[5][5]:则a[0][0]是a数组 首行首列元素(代表该元素的值).而&a[0][0]是首行首元素的地址.&&a[0][0]则是首行的首地址.从这个意义上讲,可以说行的首地址是一种二重地址,即指针的指针. 废

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+ 指针数组: 在一个数组中,如果它的元素全部都是指针类

第三十二课 二维数组及其定义 【项目1-2】

第三十二课  二维数组及其定义 项目一 [折腾二维数组] 创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后: 通过键盘输入,使后两列的10个元素获得值: 按行序优先输出数组元素: 将所有元素值乘以3后保存在数组中: 按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"): 将数组"倒"着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出): 输出数组中的所有偶数: 输出所有行列下标之和为3的倍数的元素值

关于 二维数组指针

概括的说,指针其实就是可变数组的首地址,说是可变数组,是 指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充 分节约宝贵的内存资源.我一向喜欢一维数组,除非万不得已,我一 般是不用二维数组的,多维的则更是很少涉足了.因为一维简单,容 易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更 具有讨论的必要.     闲话少说,这里我就以三个二维数组的比较来展开讨论:     (1).int **Ptr;     (2).int *Ptr[ 5 ];     (3).int ( *P

c语言中数组,指针数组,数组指针,二维数组指针

1.数组和指针 int array[5] = {1,2,3,4,5};// 定义数组 // 1. 指针和数组的关系 int * pa = array; pa = array; // p[0] == *(p+0) == array[0] == *(array+0) printf("%p\n", pa); printf("%p\n", array); /* 访问数组两种方式 1. 下标法访问 数组名[下标] 指针[下标] 下标:偏移量 2. 指针法访问 *(p+1) *

C语言数组篇(五)多级指针和二维数组指针的区别

多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[10] --> 10个空间的数组 * p[10] --> 这10个空间的数组里面存放的数据都是 指针型的数据 int *p[10] --> 数组里面每个指针指向的空间存放的是int型的数据 int *p[10] --> int **p; p: 指针数组的数组名,也是数组的首地址. *p 数组里面存放的指针 **p 数组里面存放的指针 指向的空间 的内容 二维数组指针: 二维数

java二维数组的常见初始化

public class Test{ public static void main(String[] args){ //第一种: //int[][] arr1 = new int[][]{{1,2}, {2, 3}, {4, 5}}; int[][] arr1 = {{1,2}, {2, 3}, {4, 5}}; System.out.println("arr1的数值:"); for(int i=0; i<3; ++i) for(int j=0; j<2; ++j) Sy

二维数组指针

关于一维数组的指针 例子: int a[3]={1,2,3}; int *p=a; printf("%d",*p); 输出为1 一维数组指针就是该一维数组第一元素的地址,取值运算*结果是第一个元素存储值. 再看二元数组 例子: int v[2][5]={{1,2,3,4,5},{6,7,8,9,10}}; int (*a)[5]=v; printf("%p,%p\n",a,a+1); printf("%p,%p\n",*a,*(a+1)); 输出

二维数组指针及二维动态数组的分配问题

在我以前的文章中都有讲过关于数组指针及指针数组的相关问题,但是讲得不够深入,我后来后了别人写的博客后觉得人家的确实写得好, 也学到了不少东西,对以前的问题有深的领悟了,于是准备结合这些博客和文章再稍微深入一点讲讲这些问题.这些指针的问题是C语言中的基础与关键 而且一旦出现这些问题,不太好找bug的来源,有时候不得不借助反汇编. 参考文章: http://c.biancheng.net/cpp/html/476.html       C语言指针数组和数组指针 http://blog.csdn.ne