gpt4 book ai didi

C:使用指向具有固定字符数的数组的指针进行动态内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:42 26 4
gpt4 key购买 nike

所以我想这更像是一个文体问题。

我需要写入一个大小为 3 个字节的动态元素数组。 (像素大小为24bpp的位图)

因此,每个元素都必须是一个 char[3]。如果我想避免使用 struct pixel{ char R, char G, char B},以避免使用预处理器语句,是否可以将其写为

char* pixel[3]

并以 3*sizeof(char) 的步骤分配?

为了考虑高度和宽度,我需要一个 char** 像素 [3],并且必须在单个 char 步中进行分配会使它成为一个 char*** 像素。

所以我想我正在寻找一种方法来避免使用指针-指针-指针。谢谢!

最佳答案

你是说 N block 的 3 个 unsigned char 的 [0...255] 吗?

注意区别:

unsigned char *pixel[3] -> 指向 char 的指针数组

对比

unsigned char (*pixel)[3] -> 指向字符数组的指针

#include <stdio.h>
#include <stdlib.h>

#define N 4

int main(void)
{
unsigned char (*pixel)[3];

pixel = malloc(sizeof(*pixel) * N);
pixel[0][0] = 0;
pixel[0][1] = 128;
pixel[0][2] = 255;
/* ... */
pixel[3][0] = 0;
pixel[3][1] = 128;
pixel[3][2] = 255;

printf("R:%d G:%d B:%d\n", pixel[0][0], pixel[0][1], pixel[0][2]);
free(pixel);
return 0;
}

如果您事先不知道 N,请将 malloc 替换为 realloc

关于C:使用指向具有固定字符数的数组的指针进行动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com