C Tricks(二)—— 按块访问二维数组
来源:互联网 发布:mysql数据库表设计 编辑:程序博客网 时间:2024/05/25 08:15
int mat[][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 } };
如我们要索引上述二维数组的某一 patch,比如第一行第二列开始的 2 行 3 列的内容,8, 9, 10; 13, 14, 15
。
int row = sizeof(mat)/sizeof(mat[0]); // 行数int col = sizeof(mat[0])/sizeof(mat[0][0]); // 列数int *p = (int *)mat; // 二维数组转换为一维int org_x = 1, org_y = 2; // patch 的起始位置int patch_height = 2, patch_width = 3; // patch 的大小int *row_ptr = p + org_x * col + org_y; // 块的行索引for (int i = 0; i < patch_height; ++i){ row_ptr += i * col; // 当前行,关键步,每次跳一行 for (int j = 0; j < patch_width; ++j) printf("%d ", *(row_ptr + j)); // 当前元素 putchar('\n');}
或者这么访问元素:
for (int i = 0; i < patch_height; ++i){ for (int j = 0; j < patch_width; ++j) printf("%d ", row_ptr[i*col + j]); // 当前元素 putchar('\n');}
0 0
- C Tricks(二)—— 按块访问二维数组
- C Tricks(一)—— 一维数组变二维数组
- C Tricks(三)—— 以一维数组的形式对二维数组赋值
- C Tricks(十七)—— 对角线元素的屏蔽、二维数组(矩阵)的遍历
- C Tricks(十一)—— 排除一个二维数组的边界
- Tricks(三十二)—— 二维数组转换为一维数组
- [面试] C/C++ 语法(二)—— 二维数组
- Object-C基础(6)——二维数组、结构体与块
- C/C++二维数组(数组指针)——二维数组的传值和二维数组的一维访问
- Matlab Tricks(二十五) —— 二维图像的 shuffle
- Python Tricks(二十二)—— small tricks
- Tricks(三十一)—— 访问一个数组相邻的奇数位偶数位
- C语言二维数组访问
- Tricks(二十一)—— 随机数
- numpy tricks(二)—— 删除多维数组的行或列
- C Tricks(十四)—— 余数
- C经典 数组名访问二维数组
- C Tricks(四)—— 从数组中随机选择一个元素
- 更改host的重定向
- poj 1698 Just a Hook -- (线段树,区间值修改,区间求和)
- Http 请求
- 购买腾讯云服务器后的配置问题分析
- LeetCode---Pascal Triangle、Pascal Triangle II解题分析
- C Tricks(二)—— 按块访问二维数组
- 傅里叶变换
- ACM开始啦
- 斐波那契数 32位windows 汇编
- Codeforces--140A--New Year Table(思维)
- 【python】string to list效率对比
- DoG (Difference of Gaussian)角点检测
- APP开发实战12-业务逻辑的实现
- 我的博客