我有这个问题。 在运行某些函数之前,我需要存储一个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