c - 在哪里声明我的数组,哪种方法更好?

标签 c

我有一个情况

int main()
{
   if(some_condition)
   {
      //some code
   }
   else
   {
      char *a[] = { "","",...};
      char b[size] = {};
   }

   if(some_other_condition)
   {
     // some code
   }
   else
   {
      char *a[] = { "","",...};
      char b[size1] = {};
   }
}

所以我的问题是

我需要指针数组和整数数组,如上所示,并且在我的函数中有多个这样的 if()else 情况。那么实现这一目标的更好方法是什么?截至目前,我已将我的阵列放在需要的地方,如上所示。

另一种选择是将所有内容放在函数的开头并在需要时使用它们。

int main()
{
   char *a[some_big_size];
   char b[size_big];

   if()
   {
      //some_code
   }
   else
   {
      for(i=0;i<n;i++)
      {
         a[i] = malloc(len);
         strlcpy(a[i],"string",len);
      }
      for(i=0;i<n;i++)
      {
         b[i] = val;
      }
   }
}

请让我知道我应该选择以上两个选项中的哪一个?我了解到在需要时声明变量,所以我想知道你们的想法。

是否有不同的方法可以共同实现这一目标?

最佳答案

我相信您的第一个代码示例更好。声明自定义大小的数组将帮助您比声明一个单一的通用数组更容易捕获越界错误。一个小好处是您只在真正需要时才分配内存,但您的数组必须非常大才能做到这一点。

关于c - 在哪里声明我的数组,哪种方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29002363/

相关文章:

c - 将 char 数组传递给结构成员

c - 如何将 regexec 与内存映射文件一起使用?

c++ - 循环#includes 是如何解决的?

c++ - 在 GCC 中使用一个 C 函数编译 C++

c - 为两个双指针释放一个 malloc

c++ - 未从 main.cpp C++ 调用 C 函数

c++ - 在 C++ 中将一维数组作为二维数组访问

c - 我的for循环的某个部分的输出

c++ - 锁定文件并避免同一进程访问它两次

c - 如何将数组参数作为空指针遍历