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

    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. 对象、句柄、ID之间的区别

    对象是C++的概念,C++的类对象 句柄是Windows SDK的概念,指向某种资源的一种“指针”(有时候底层不一定是指针) 资源ID在MFC里仅仅是一个宏,也就是个整数. 其实,句柄是控件在数据结构 ...

  2. Unity基础-发布

    PC BuildSetting File->BuildSetting Switch Platform Development Build是在调试模式下使用版本 Script Debugging调 ...

  3. python入门:输出1-10的所有数

    #!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10的所有数 """ 变量kaishi的赋值为数字1,while 真, ...

  4. setup/hold 分析

    分析说明:D2:目的寄存器:D1:源寄存器: edge2:下一个时钟上升沿:edge1:当前时钟上升沿:edge0:当前时钟上升沿的前一个时钟沿:如下图: 建立时间:触发器D2(数据要到达目的的地方) ...

  5. 21.Yii2.0框架多表关联一对多查询之性能优化--模型的使用

    控制器里 功能: 通过分类,查分类下的所有文章 //关联查询 public function actionRelatesearch(){ //关联查询 //查询方法一(查一行) 一维数组下的值是obj ...

  6. java代码导出数据到Excel、js导出数据到Excel(三)

     jsp内容忽略,仅写个出发按钮:          <button style="width: 100px" onclick="expertExcel()&quo ...

  7. makedown语法

    文章转载至:https://blog.csdn.net/u014061630/article/details/81359144#1-%E5%BF%AB%E6%8D%B7%E9%94%AE 前言 写过博 ...

  8. Python学习笔记:configparser(INI格式配置文件解析)

    在平时的开发中感觉INI格式的配置文件使用还是挺需要的,有时会使用一个单独的py来存放一些常量或者配置项,大多时候这样倒是挺好用的,但是如果某些配置项需要在运行时由用户来修改指定,比如很多app在关闭 ...

  9. Python之多线程与多进程(二)

    多进程 上一章:Python多线程与多进程(一) 由于GIL的存在,Python的多线程并没有实现真正的并行.因此,一些问题使用threading模块并不能解决 不过Python为并行提供了一个替代方 ...

  10. loj2024「JLOI / SHOI2016」侦查守卫

    too hard #include <iostream> #include <cstdio> using namespace std; int n, d, m, uu, vv, ...