gpt4 book ai didi

c - C 上的返回矩阵

转载 作者:太空狗 更新时间:2023-10-29 14:58:35 25 4
gpt4 key购买 nike

下面是我的代码。

#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>

void rot(int angle);
static double R[3][3]={0};

int main(void) {
int angle = 30;
rot(angle);
int i, j = 0;

for (i = 0; i < 3;i++) {
for (j = 0; j < 3; j++) {
printf("%lf\n", R[i][j]);
}
}
return 0;
}

void rot(int angle) {
double cang = cos(angle*M_PI / 180);
double sang = sin(angle*M_PI / 180);

R[0][0] = cang;
R[1][1] = cang;
R[1][0] = -sang;
R[0][1] = sang;
}

目前,函数 rot 本身不返回任何值。但是由于 R 是静态 double 的,所以我能够打印出由 rot 函数更改的 R。我想更改函数 rot 以返回 R[3][3](二维数组)。所以我想在 main 上使用 rot 函数,比如

double R1=rot(30);
double R2=rot(60);

有什么办法可以实现吗?

最佳答案

副本不一定适合这个。由于这些 R² 矩阵需要易于复制,因此表示它们的最佳方式是将它们放在结构中:

typedef struct Matrix3x3 {
double v[3][3];
} Matrix3x3;

然后将它们作为返回值是微不足道的:

Matrix3x3 rot(int angle) {
Matrix3x3 m = {0};
double cang = cos(angle*M_PI / 180);
double sang = sin(angle*M_PI / 180);

m.v[0][0] = cang;
m.v[1][1] = cang;
m.v[1][0] = -sang;
m.v[0][1] = sang;
return m;
}

与数组不同,包含数组的结构也很容易复制:

Matrix3x3 x = y;

关于c - C 上的返回矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com