c/c++语言开发共享C初始化数组数组

我有这个问题。 在运行某些函数之前,我需要存储一个float数组数组。 我怎么能实现这一点,因为我无法初始化一个非常数的数组? 我应该创建一个将使用malloc创建该数组的函数然后返回并分配给指针?

typedef struct { float RGBA[4]; } graphColors; 

我需要一个grapColors数组。 我很抱歉缺乏知识,我是一名Java程序员,现在需要与C合作。

编辑:

 graphColors *initializeGraphColors(){ graphColors *gp; int i; float HI = 1.0f; float LO = 0.0f; float temp[] = {1.0f, 1.0f, 1.0f, 0.0f}; gp = (graphColors *) malloc(nrOfLines * sizeof(graphColors)); for(i = 0;i < nrOfLines; i++){ gp[i].RGBA[0] = LO + (float)rand()/((float)RAND_MAX/(HI-LO)); gp[i].RGBA[1] = LO + (float)rand()/((float)RAND_MAX/(HI-LO)); gp[i].RGBA[2] = LO + (float)rand()/((float)RAND_MAX/(HI-LO)); gp[i].RGBA[3] = 0.0f; } return gp; } 

然后在我class上:

 graphColors *gc; gc = initializeGraphColors(); 

得到此错误:

 error C2040: 'gc' : 'graphColors *' differs in levels of indirection from 'graphColors' 

    如果在编译时不知道您需要存储在数组中的值,是的,您需要一个函数,但如果在编译时数组的大小未知,则只需通过malloc()分配一个数组。

    所以…如果在编译时知道大小和内容,你可以这样做……

     #define NUM_ELEMENTS 2 typedef struct { float RGBA[4]; } graphColors; graphColors array[NUM_ELEMENTS] = { { 1.0, 0.4, 0.5, 0.6 }, { 0.8, 0.2, 0.0, 1.0 } } 

    如果已知大小,但不知道值,则可以执行此操作…

     #define NUM_ELEMENTS 2 typedef struct { float RGBA[4]; } graphColors; graphColors array[NUM_ELEMENTS]; void InitGraph() { for( int i = 0; i < NUM_ELEMENTS; i++ ) { for( int j = 0; j < 4; j++ ) { array[i][j] = GetValue( i, j ); } } } 

    如果您在运行时之前不知道大小或内容,可以这样处理...

     typedef struct { float RGBA[4]; } graphColors; graphColors* array = NULL; void InitGraph( int num_elements ) { array = malloc( sizeof( graphColors ) * num_elements ); if( !array ) { printf( "errorn" ); exit( -1 ); } for( int i = 0; i < num_elements; i++ ) { for( int j = 0; j < 4; j++ ) { array[i][j] = GetValue( i, j ); } } } 

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

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐