复数 3D 数组
Complex numbers 3D array
如何在 C 中动态定义三维复数数组,以便我可以使用 [i] [j] [k]
表示法访问数组?
您可以使用 VLA,例如:
#include <stdio.h>
#include <complex.h>
int main(void) {
size_t n = 2,
m = 3,
o = 4;
double complex a[n][m][o];
a[1][2][3] = 1.0 + 0.5*I;
printf("%f + %fi\n", creal(a[1][2][3]), cimag(a[1][2][3]));
return 0;
}
扩展 Bob__'s 以将数组分配到堆上而不是堆栈上:
#include <stdlib.h>
#include <stdio.h>
#include <complex.h>
int main(void)
{
size_t n = 2, m = 3, o = 4;
double complex (*pa)[n][m][o] = malloc(sizeof *pa);
if (NULL == pa)
{
perror("malloc() failed");
exit(EXIT_FAILURE);
}
(*pa)[1][2][3] = 1.0 + 0.5*I;
printf("%f + %fi\n", creal((*pa)[1][2][3]), cimag((*pa)[1][2][3]));
free(pa);
return EXIT_SUCCESS;
}
如何在 C 中动态定义三维复数数组,以便我可以使用 [i] [j] [k]
表示法访问数组?
您可以使用 VLA,例如:
#include <stdio.h>
#include <complex.h>
int main(void) {
size_t n = 2,
m = 3,
o = 4;
double complex a[n][m][o];
a[1][2][3] = 1.0 + 0.5*I;
printf("%f + %fi\n", creal(a[1][2][3]), cimag(a[1][2][3]));
return 0;
}
扩展 Bob__'s
#include <stdlib.h>
#include <stdio.h>
#include <complex.h>
int main(void)
{
size_t n = 2, m = 3, o = 4;
double complex (*pa)[n][m][o] = malloc(sizeof *pa);
if (NULL == pa)
{
perror("malloc() failed");
exit(EXIT_FAILURE);
}
(*pa)[1][2][3] = 1.0 + 0.5*I;
printf("%f + %fi\n", creal((*pa)[1][2][3]), cimag((*pa)[1][2][3]));
free(pa);
return EXIT_SUCCESS;
}