C: 在 Raspberry Pi 上写入数组指针时出现段错误

标签 c arrays pointers segmentation-fault

我正在尝试通过函数中的指针写入颜色数组中的元素。函数是:

void setColor(int color1[3],int color2[3], int *red, int *green, int *blue) {
int redInc = (color2[1]-color1[1])/range;
int greenInc = (color2[2]-color1[2])/range;
int blueInc = (color2[3]-color1[3])/range;

int i = 0;
while (i < range) {
    *(red+i) = color1[1] + i*redInc;
    printf("This is red: %s\n",*(red+i));
    *(green+i) = color1[2] + i*greenInc;
    *(blue+i) = color1[3] + i*blueInc;
    i++;
}
return;}     

Range 定义为常数 21。在主循环内部:

int color1[3] = {255,0,0};
int color2[3] = {0,255,0};

int red[21] = {0};
int green[21] = {0};
int blue[21] = {0};

setColor(color1,color2,red,green,blue);

我已经在我的 Linux 机器上试过这段代码,它似乎可以工作,但它在我的 Raspberry Pi 上出现段错误。这是我尝试访问数组的方式吗?

最佳答案

C 是零索引的,这意味着如果你有一个 3 整数长的数组,你可以使用索引 0、1 和 2 访问它

例子:

int ex[3] = {1,2,3};
printf("%d %d %d", ex[0], ex[1], ex[2]);

将输出:

1 2 3

因此,您需要做的是检查您的代码并检查您在哪里不正确地索引数组,这看起来像函数 void setColor(int color1[3],int color2[3] 中的所有数组], int *red, int *green, int *blue)

关于C: 在 Raspberry Pi 上写入数组指针时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663547/

相关文章:

java - 如果将项目添加到二维数组中不存在的位置,则防止崩溃

javascript - 轻松循环遍历 json api 数组 jquery

c - 链表地址

c++ - 指向数组 c++ 的指针

c - realloc导致程序崩溃

c - 执行与字符串相关的 C 程序时出现段错误

c - 警告 : initialization makes pointer from integer without a cast in C

java - 在java中使用HttpURLConnection发布数组

c - 减去两个字符指针

c++ - 使用预处理器指令从数学方程式生成错误值