我试图在C中创建一个矩阵,其中每个元素都是一个Bignum(来自Openssl库)。
我原以为会是这样的,但没用。

BIGNUM *p [2][2] = NULL;
  int i; int j;
  for(i=0;i<2;i++){
    for(j=0;j<2;j++){
      *p[i][j] = BN_new();
    }

  }

我很感激你的帮助。

最佳答案

我假设BN_new()的返回类型是BIGNUM *
由于BIGNUM *p[2][2]是一个2*2数组,并且元素的数据类型是BIGNUM*,因此对数组p元素的赋值如下所示:

p[i][j] = BN_new();

这意味着您的代码应该如下所示:
BIGNUM *p[2][2] = {NULL, NULL, NULL, NULL};

for( int i=0; i<2; ++i ) {
    for( int j=0; j<2; ++j ) {
        p[i][j] = BN_new();
    }
}

表达式*p[i][j]将通过指针BIGNUM间接访问p[i][j]值。这是可行的,因为索引运算符[]优先于间接运算符*

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

10-10 20:26