在结构中的指针数组的初始化中是否需要大括号?

时间:2018-08-14 08:16:48

标签: c pointers data-structures

我已经使用Dev C ++和SPC5 Studio编译了C代码,该代码的结构包含指向另一个结构的指针数组。

public override void CommitEditingStyle (UITableView tableView,UITableViewCellEditingStyle editingStyle, Foundation.NSIndexPath indexPath){
switch (editingStyle) {
    case UITableViewCellEditingStyle.Delete:
        // remove the item from the underlying data source
        tableItems.RemoveAt(indexPath.Row);
        // delete the row from the table
        tableView.DeleteRows (new NSIndexPath[] { indexPath }, UITableViewRowAnimation.Fade);
        break;
    case UITableViewCellEditingStyle.None:
        Console.WriteLine ("CommitEditingStyle:None called");
        break;
}}

初始化如下所示

   typedef struct
    {
      uint16 Identifier_u16;
      void* const DataFncType;
    }ClassCfg_ts;

    typedef struct
    {
      uint32 Val_u32;
      ClassCfg_ts*  ClassRef_pu[2];
    }atrb_paramCfg_ts;

其中定义了writeFunciton。当使用Dev C ++时,这种初始化效果很好,而在SPC5 studio中,它会发出警告,警告您使用花括号,并且只有在将初始化更改为

时,它才会消失
ClassCfg_ts ClassCfg1_s[] = {
{0,writeFucntion},//read write fucntion
{1,writeFucntion},//read write fucntion
{2,writeFucntion},//read write fucntion
};

ClassCfg_ts ClassCfg2_s[] = {
{0,writeFucntion},//read write fucntion
{1,writeFucntion},//read write fucntion
{2,writeFucntion},//read write fucntion
};

atrb_paramCfg_ts atrb_paramCfg_s[] =
{
{0,ClassCfg1_s},
{0,ClassCfg2_s},
};

其中哪个是正确的初始化?

1 个答案:

答案 0 :(得分:2)

ClassRef_p是指向ClassCfg_ts的指针的数组。您需要准备初始化数组。 {ClassCfg2_s}是以上代码段中初始化它的正确方法。