使用指针修改struct数组

时间:2016-09-29 21:41:39

标签: c arrays struct

我想用指针修改结构数组的每个元素。

我正在使用两个不同大小的数组

struct color 
{

    char red;
    char blue;
    int white;
};

struct colorInit
{

    char red;
    char blue;
    int white;
    int padding[60]; 
};


struct color batch1[30];

struct colorInit batchInitializd[30]; 

void modifystruct ( struct color *ptr)

{

  for ( int i = 0; i < 30; i++)

  {

     ptr[i].red = batchInitializd[i].red;

     ptr[i].white = batchInitializd[i].white;

     ptr[i].blue = batchInitializd[i].blue;

}

}

我在函数中使用指针正确方式吗?

1 个答案:

答案 0 :(得分:0)

  

我在函数中使用指针正确方式吗?

从句法上讲,是的。

如果ptr指向30个或更多对象的数组,则该函数将正常工作。否则,它将具有未定义的行为。

由于OP更改了batchInitializd的对象类型,因此以下内容无效。

<击> 您可以将功能简化为:

void modifystruct(struct color *ptr)
{
   for ( int i = 0; i < 30; i++)
   {
      ptr[i] = batchInitializd[i];
   }
}

<击>