c - 如何将数组存储到C中的数组中?
问题描述
假设我有一个固定大小为 3 的数组,用于存储颜色的 RGB。例子:
color[3] = {0, 0, 255}
我有另一个数组,arrayOfColors 存储许多颜色。例子:
arrayOfColors = { {0, 0, 255}, {0, 0, 0}, {255, 255, 255} }
我不确定什么是最好的方法,但我已经尝试过。但是当我这样做时我有错误。请帮帮我,我对C语言很陌生。先感谢您!
unsigned char color1[3] = {0, 0, 0};
unsigned char color2[3] = {0, 255, 255};
unsigned char *rowColors = NULL;
rowColors = (unsigned char*)malloc((2) * sizeof(char));
rowColors[0] = color1;
rowColors[1] = color2;
解决方案
请记住,除非它是一元运算符sizeof
或一元运算符的操作数,否则&
数组表达式如color1
和color2
将从“N 元素数组T
”类型的表达式转换(“衰减”)为“指针T
”,表达式的值将是数组的第一个元素的地址。所以在这样的表达中
x = color1;
x
需要的类型unsigned char *
。因此,您可以首先设置一个数组unsigned char *
来存储单独数组的地址,例如color1
and color2
:
unsigned char *colors[2];
colors[0] = colors1;
colors[1] = colors2;
然而,最终可能更简单的只是设置一个 Nx3 数组unsigned char
:
unsigned char colors[N][3]; // for some N
memcpy( colors[0], color1, sizeof color1 );
要动态分配它,请使用
unsigned char (*colors)[3] = malloc( sizeof *colors * N );
您可以像访问常规数组一样访问每个元素:
colors[0][0] = color1[0];
推荐阅读
- pug - Pug 和 Svelte 每次迭代都不起作用
- html - CSS按钮不保持焦点格式
- javascript - 将 undefined 传递给 React setState 是错误的吗?
- javascript - AWS Amplify JavaScript Gitpod 自动设置
- python - 在 python 数据框列中查找唯一单词并计算它们
- powershell - PowerShell 在清理文件时跟踪更新和拒绝的行
- php - 显示取决于数量的选择框选项
- postgresql - 删除所有违反新的 unqiue 约束的记录
- html - 放大时页脚卡在页面中间| 引导程序 4
- java - 这是从并发哈希映射中提取计数而不会丢失一些或重复计数的正确方法吗?