一、不规则数组:每一行的列数不相等

    1、复合字面量:

      1)、复合字面量是一种C构造

      2)、外形和数组声明差不多,写法与类型转换一样,(int[3]){10, 20, 30,}

      3)、将多个复合字面量可以组合为不规则数组

    2、特征:

      1)、使用复合字面量声明规则二维数组

  #include <stdio.h>

  int main(int argc, char **argv)
{
int (*(arr1[])) = {
(int[]){, , ,},
(int[]){, , ,},
(int[]){, , ,},
};
for(int i = ; i < ; i++){
for(int j = ; j < ; j++){
printf("arr1[%d][%d] address: %p value: %d\n", i,j, &arr1[i][j], arr1[i][j]);
}
printf("\n");
} return ;
}

      2)、使用复合字面量声明不规则二维数组

  #include <stdio.h>

  int main(int argc, char **argv)
{
int (*(arr1[])) = {
(int[]){, , , ,},
(int[]){, ,},
(int[]){, , ,},
}; int col[] = {, , ,}; for(int i = ; i < ; i++){
for(int j = ; j < col[i]; j++){
printf("arr1[%d][%d] address: %p value: %d\n", i,j, &arr1[i][j], arr1[i][j]);
}
printf("\n");
} return ;
}

      3)、使用复合字面量声明规则二维数组,使用指针表示法访问

  #include <stdio.h>

  int main(int argc, char **argv)
{
int (*(arr1[])) = {
(int[]){, , ,},
(int[]){, , ,},
(int[]){, , ,},
};
for(int i = ; i < ; i++){
for(int j = ; j < ; j++){
printf("arr1[%d][%d] address: %p value: %d\n", i,j, *(arr1 + i) + j, *(*(arr1 + i) + j));
}
printf("\n");
} return ;
}

      4)、使用复合字面量声明不规则二维数组,使用指针表示法访问

  #include <stdio.h>

  int main(int argc, char **argv)
{
int (*(arr1[])) = {
(int[]){, , , ,},
(int[]){, ,},
(int[]){, , ,},
}; int col[] = {, , ,}; for(int i = ; i < ; i++){
for(int j = ; j < col[i]; j++){
printf("arr1[%d][%d] address: %p value: %d\n", i,j, *(arr1 + i) + j, *(*(arr1 + i) + j));
}
printf("\n");
} return ;
}

      5)、不规则数组的访问可以使用多个for循环输出。

    

26深入理解C指针之---不规则数组与指针的更多相关文章

  1. C++笔记-数组指针/二维数组转换指针

    参考资料: 1. 作者 BensonLaur  :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...

  2. C基础知识(3):指针--概念、数组中指针的递增/递减、指针数组&数组指针、指向指针的指针

    指针是一个变量,其值为另一个变量的地址. 所有指针的值的实际数据类型,不管是整型.浮点型.字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数. 下面从4个代码例子分别讲述以下 ...

  3. [C++]指针和指向数组的指针[一维数组与指针]

     1.一维数组与指针      形如:int型 数组 a[10]                1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址          ...

  4. #运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针

    #运算符:用于在预编译期将宏参数转换为字符串 #define CONVERS(x)  #x   //注:没用双引号包括. 不同类型的指针占用的内存空间大小相同. 局部变量 定义: a[5]; 打印a[ ...

  5. C语言数组指针(指向数组的指针)

    注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变 ...

  6. C++——指针2-指向数组的指针和指针数组

    7.4 指向数组元素的指针 声明与赋值 例:int a[10], *pa; pa=&a[0]; 或 pa=a[p1] ; 通过指针引用数组元素,经过上述声明及赋值后: *pa就是a[0],*( ...

  7. int (*p)[4] p 是二级指针 二维数组 二级指针 .xml

    pre{ line-height:1; color:#2f88e4; background-color:#e9ffff; font-size:16px;}.sysFunc{color:#3d7477; ...

  8. [C++]数组与指针[二维数组与指针]

  9. 深入理解C/C++数组和指针

    C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...

随机推荐

  1. 关于UINavigationController的一些技巧

    未自定义任何东西的导航条效果如下: 1.自定义了 leftBarButtonItem 之后,左滑返回手势失效了,解决办法: self.navigationController.interactiveP ...

  2. 怎么删除服务中的mysql服务

    可以进WINDOWS的管理里查看MYSQL的服务,把它停止或以DOS下用命令停止1.如果要卸载MYSQL执行下面命令:DOS下>mysqld -remove mysql2.启动MYSQL: DO ...

  3. Win2008 Server配置PHP环境

    Win2008 Server配置PHP环境   阅读目录 创建一个网站 配置PHP环境 配置iis的“处理应用程序映射” 在配置PHP环境之前要先配置好IIS. 传送门-> Win2008 Se ...

  4. Hibernate知识梳理

    一.SessionFactory接口 是单个数据库映射关系(ORM)经过编译后的内存镜像.SessionFactory(的实例)作为应用中的一个全局对象(工厂),可以随处打开/创建一个session, ...

  5. vim中,在编辑模式下如何快速移动光标

    编辑 ~/.vimrc 配置文件,加入如下行,编辑模式下自定义的快捷键 inoremap <C-o> <Esc>o  inoremap <C-l> <Righ ...

  6. visual studio 2013 for windows desk报error MSB8020: The build tools for v141错误

    由于硬件限制,学习在touchgfx暂时在Windows下模拟仿真,了解其基本原理和有一个基本感性认识,因此安装了VS Express 2013 for Desktop轻量级编译器. 有TouchGF ...

  7. Linux学习-Linux 的开机流程分析

    开机流程一览 系统开机的经过可以汇整成底下的流程的: 加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置; 读取并执行第一个开机装置内 MBR 的 boot Loader (亦 ...

  8. Hadoop4.2HDFS测试报告之二

    第一组:文件存储写过程记录 测试系统组成 存储类型 测试程序或命令 测试文件大小(Mb) 文件个数(个) 客户端并发数(个) 写速率(M/s) NameNode:1 DataNode:1 本地存储 s ...

  9. SPOJ COT2 Count on a tree II 树上莫队算法

    题意: 给出一棵\(n(n \leq 4 \times 10^4)\)个节点的树,每个节点上有个权值,和\(m(m \leq 10^5)\)个询问. 每次询问路径\(u \to v\)上有多少个权值不 ...

  10. UVa 1452 递推 Jump

    约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...