c malloc 指向结构数组的指针

标签 c arrays pointers memory-management struct

我正在尝试创建一个指向结构的数组 的指针,并将其传递给一个函数,我将在其中更改结构的值。

有人能解释一下为什么我的代码似乎没有为 array 正确分配内存,因为如果我存储 编译版本的执行失败 27pixels struct 中的 both integer 变量,而如果我只存储 one integer 变量,它适用于 27pixels ?

    typedef struct Pixel
    {
        int label;
        int area;
    }Pixelmap;

    int change_pixel(Pixelmap* pixelmap)
    {
         for (x = 0; x < dimx*dimy*dimz; x++)
        {
            pixelmap[x].label = x; /* or malloc and strcpy */
            pixelmap[x].area = 1;
            printf("%i\n",pixelmap[x].label);
        }
        return 1;
    }

    int main()
    {
        Pixelmap *pm;
        pm = malloc(dimx*dimy*dimz * sizeof (struct Pixel));
        change_pixel(&pm);
        printf("End!\n");
        free(pm);
        return 0;
    }

最佳答案

您将指针的地址传递给 change_pixel,但它需要指针本身。应该是:

change_pixel(pm);

我很惊讶你没有从编译器那里得到关于参数类型不正确的警告。参数声明为 Pixelmap*,但您传递了 Pixelmap**

关于c malloc 指向结构数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107938/

相关文章:

c++ - 如何保护类外用户可以修改的指针地址? C++

c - 需要 C 程序帮助

c - 重新分配指针数组

c - 是否有像 MATLAB 舍入函数这样的 C 舍入函数?

c - 为什么这个程序中的arr与*arr相同?

php - 来自数据库查询的数组内数组

c# - 使用模式匹配来匹配具有非零下限的数组

c - C语言中如何将数组初始化为0?

c - 在 SUSE linux 中找不到 omp.h 头文件

python - 使用 ctypes 将指针传递给 dll 函数