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语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...
随机推荐
- Mutations-freecodecamp算法题目
Mutations(比较字符串) 要求 如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true. 不用考虑大小写和字符顺序 思路 将数组中的两个字符串小写化 将第二个数组元素(第二 ...
- 51nod——2502最多分成多少块
数据范围好小... 题目中没说要升序降序,不过样例解释里可以看出是要升序. #include <bits/stdc++.h> using namespace std; ],b[],visi ...
- 洛谷 P5015 标题统计
第一道题很简单,标签:字符串.模拟. 只需要一个判断去除空格就对了: if(a[i]!=' ' && a[i]!='\n') v++; code: #include<iostre ...
- Linux下配置Django_Apache_Mysql环境(CentOS 7.5)
本文将介绍如何在Linux上部署Django + Mysql + Apache环境.我们知道,Django内置的http服务器只能工作在单线程下,做开发和调试时候是可以的,但是生产环境通常都会有多用户 ...
- robotframework的列表与字典
这里以Get Element Size为例,Selenium2Library返回的是列表,AppiumLibrary返回的是字典. 列表用 ${width}获取:字典用 &{ui}[width ...
- Survey lists 10 most innovative cities
From China Daily Beijing and Shanghai are among the 10 most innovative cities in the world, based on ...
- Linux异常体系之stubs_offset
转自 http://www.xuebuyuan.com/2208550.html 在ARM V4及V4T以后的大部分处理器中,中断向量表的位置可以有两个位置:一个是0x00000000,另一个是0xf ...
- golang json 示例
jsonStr, err := client.Get( deviceIdKey ).Result() if err == redis.Nil { deviceIds = []string{device ...
- 网页静态化解决方案Freemarker
序言: 沉淀了三个月,逐步将自己最近两年在公司中用到的技术和知识点,重新整理归纳了下,对比以前可以发现,现在技术更新越来越快,也越来越成熟,在互联网企业,用到的技术也更先进,更领先,比如微服务.分布式 ...
- JS实现——贪吃蛇
把以下代码保存成Snake.html文件,使用Google或360浏览器打开 <!DOCTYPE HTML> <html> <head> <meta char ...