26深入理解C指针之---不规则数组与指针
一、不规则数组:每一行的列数不相等
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指针之---不规则数组与指针的更多相关文章
- C++笔记-数组指针/二维数组转换指针
参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...
- C基础知识(3):指针--概念、数组中指针的递增/递减、指针数组&数组指针、指向指针的指针
指针是一个变量,其值为另一个变量的地址. 所有指针的值的实际数据类型,不管是整型.浮点型.字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数. 下面从4个代码例子分别讲述以下 ...
- [C++]指针和指向数组的指针[一维数组与指针]
1.一维数组与指针 形如:int型 数组 a[10] 1)&a[0] 地址常量;地址类型:int *型 ; 存储数组a的首地址 ...
- #运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针
#运算符:用于在预编译期将宏参数转换为字符串 #define CONVERS(x) #x //注:没用双引号包括. 不同类型的指针占用的内存空间大小相同. 局部变量 定义: a[5]; 打印a[ ...
- C语言数组指针(指向数组的指针)
注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变 ...
- C++——指针2-指向数组的指针和指针数组
7.4 指向数组元素的指针 声明与赋值 例:int a[10], *pa; pa=&a[0]; 或 pa=a[p1] ; 通过指针引用数组元素,经过上述声明及赋值后: *pa就是a[0],*( ...
- int (*p)[4] p 是二级指针 二维数组 二级指针 .xml
pre{ line-height:1; color:#2f88e4; background-color:#e9ffff; font-size:16px;}.sysFunc{color:#3d7477; ...
- [C++]数组与指针[二维数组与指针]
- 深入理解C/C++数组和指针
C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...
随机推荐
- 对象、句柄、ID之间的区别
对象是C++的概念,C++的类对象 句柄是Windows SDK的概念,指向某种资源的一种“指针”(有时候底层不一定是指针) 资源ID在MFC里仅仅是一个宏,也就是个整数. 其实,句柄是控件在数据结构 ...
- NOIP2018
非常糟糕.从未意识到过考场debuff这么严重. 果不其然,高档选手强如txc实力AK:而像我这样的中档选手就是重在考场发挥和自我调整了吧. 究竟要付出多少代价才能领会一个教训 看来要尝试更自闭一点
- 【windows】win7 sp1 系统语言中英文切换
注:Windows 7 Ultimate and Windows 7 Enterprise (旗舰版和企业版) 可以直接在控制面板/地区和语言中修改显示语言,其他系统不行 进入网站下载相关的MUI包安 ...
- static关键字所导致的内存泄漏问题
大家都知道内存泄漏和内存溢出是不一样的,内存泄漏所导致的越来越多的内存得不到回收的失手,最终就有可能导致内存溢出,下面说一下使用staitc属性所导致的内存泄漏的问题. 在dalvik虚拟机中,sta ...
- 我的Python分析成长之路7
类 一.编程范式: 1.函数式编程 def 2.面向过程编程 (Procedural Programming) 基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个 ...
- python模块之sys
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxi ...
- 循环字典进行操作时出现:RuntimeError: dictionary changed size during iteration的解决方案
在做对员工信息增删改查这个作业时,有一个需求是通过用户输入的id删除用户信息.我把用户信息从文件提取出来储存在了字典里,其中key是用户id,value是用户的其他信息.在循环字典的时候,当用户id和 ...
- light oj 1104 Birthday Paradox (概率题)
Sometimes some mathematical results are hard to believe. One of the common problems is the birthday ...
- viewController备注
1.按结构可以对iOS的所有ViewController分成两类: 1).主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UIT ...
- hdu 6318
Long long ago, there was an integer sequence a.Tonyfang think this sequence is messy, so he will cou ...