c/c++语言开发共享int数组的未知大小

我有一个包含int数组的struct 。 我不想修复数组的大小,因为我不知道有多少元素会进入它并且不想浪费内存。

一个int指针数组本质上是相同的。

我尝试了一个指向整数数组的指针和一个无效的双指针。

我怎么能做到这一点?

注意:

我的意思是int指针数组是如果我设置一个固定大小的int指针数组,那么我仍然在浪费空间,所以在这个意义上它与int的固定大小数组没有区别。 唯一的区别是intint pointer大小可能不同。

    一个int指针数组本质上是相同的。

    不,你的意思是一个指针( int * ):

     int *arr = malloc(sizeof(*arr) * n); 

    如果你事先不知道n

     int n = 0, *arr = NULL; while (condition) { arr = realloc(arr, sizeof(*arr) * (n + 1)); n++; } 

    一个int指针数组本质上是相同的

    并不是的。 一系列指针与它完全无关。

    你需要的是一个int *a指针,你将它用作指向整数数组的第一个元素的指针。 您将在运行时通过具有适当大小的malloc分配的整数数组。 如果需要,您将能够使用realloc来扩展arrays。

    如果你的struct类型中只有一个运行时大小的数组,你有另一个选项称为“struct hack”。 您可以搜索有关“struct hack”的大量信息。 这是一个例子: C struct hack at work

    你可以使用这个技巧:

     struct stuff { int arr[1]; }; 

    然后,当您创建其中一个时,使用malloc(sizeof(struct stuff) + n*sizeof(int)) ,其中n是您要存储多少额外整数。 然后您可以照常访问它们,例如mystuff.arr[100] ,只要n至少为100。

    在C99中你可以改为说int arr[]; 在C99之前,如果你有GCC,你可以做int arr[0]; 。 这当然可以让你更容易创建空数组。

      以上就是c/c++开发分享int数组的未知大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      www.ctvol.com true https://www.ctvol.com/c-cdevelopment/519199.html Article c/c++语言开发共享int数组的未知大小

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519199.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐