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语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...
随机推荐
- NOIP模拟赛 虫洞
[题目描述] John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N (从1. ...
- Mybatis 循环 foreach, 批量操作
mapper.java: int modifySortOfGoods(@Param("idlist") List<String> goodsIds, @Param(&q ...
- python-函数基础、函数参数
目录 函数的基础 什么是函数 为何用函数 如何调用函数 定义函数的三种形式 无参函数 有参函数 空函数 函数的返回值 什么是返回值 为什么要有返回值 函数的调用 函数参数的应用 形参和实参 位置参数 ...
- local search——配图
- Java技术——Java泛型详解
.为什么需要泛型 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52230032 泛型在Java中有很重要的地位,网上很多文章罗列各种 ...
- ATM源码
package atm;//张秋亮,信1705-3,20173529 public class Account { private String accountID; private String a ...
- luogu3389 【模板】高斯消元法
#include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...
- 静态方法中不能使用 $this
忽略了一个问题,$this 代表当前对象!! 静态方法中应该使用 类名 . self 或者 static 关键字来代替! static public function get_info($id) { ...
- Leetcode1--->数组中两数之和等于给定数
题目: 给定一个数组nums,目标数target.在数组中找到两数之和为target的数,返回两数的下标举例: Given nums = [2, 7, 11, 15], target = 9, Bec ...
- 正则表达式 去除所有非ASCII字符
需求: 去除字符串中包含的所有外国字符 只能使用正则如下,找到包含非ASCII的记录 db=# select * from test where info ~ '[^(\x00-\x7f)]'; id ...