我想在做一些计算之后在 C 中创建一个数组,请你帮我吗?
int len_arr = (sizeof inputs)/(sizeof inputs[0]);
int half_arr = len_arr / 2;
if(len_arr%2 != 0)
half_arr++;
int m[half_arr][half_arr];
答案 0 :(得分:4)
我假设你想创建一个行/列大小为half_arr
的矩阵。
int i;
int len_arr = (sizeof inputs)/(sizeof inputs[0]);
int half_arr = len_arr / 2;
if(len_arr%2 != 0)
half_arr++;
int **m = malloc(half_arr * sizeof(int));
for (i = 0; i < half_arr; i++)
*m = malloc(half_arr * sizeof(int));
然后,您应该可以使用m
或m[row][column]
访问m[column][row]
。
答案 1 :(得分:2)
您需要使用malloc
来分配您的二维数组。
请查看此LINK以获得更好的解释。
修改强>
从给定链接的代码开始,我编写了一段应该可行的代码。
与詹姆斯的代码存在一些差异:
m
声明#include <stdlib.h>
int main ()
{
// just an example of inputs...
int inputs[3][7];
// your code
int i;
int **m;
int len_arr = (sizeof inputs)/(sizeof inputs[0]);
int half_arr = len_arr / 2;
if(len_arr%2 != 0)
half_arr++;
// allocation of the array
m = (int **)malloc(half_arr * sizeof(int *));
for(i = 0; i < half_arr; i++)
m[i] = (int *)malloc(half_arr * sizeof(int));
// use the array as you like...
// ...
// let's release the allocated memory properly
for(i = 0; i < half_arr; i++)
free(m[i]);
free(m);
}
答案 2 :(得分:-1)
您的代码有效C99。您可能希望使用支持C语言的较新版本的编译器。
在Windows上,我会使用MinGW edition of gcc。如果你坚持使用MSVC,我建议使用C ++:标准的容器类型会让你的生活更轻松。