首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C创建一个Bignum矩阵

C创建一个Bignum矩阵
EN

Stack Overflow用户
提问于 2018-01-23 21:46:46
回答 2查看 229关注 0票数 1

我正在尝试用C语言创建一个矩阵,其中每个元素都是一个Bignum (来自Openssl librairy)。我想它应该是这样的,但它不起作用。

代码语言:javascript
复制
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();
    }

  }

如果有任何帮助,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-01-24 04:00:13

我假设BN_new()的返回类型是BIGNUM *

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

代码语言:javascript
复制
p[i][j] = BN_new();    

这意味着您的代码应该如下所示:

代码语言:javascript
复制
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]将通过指针p[i][j]间接访问BIGNUM值。这是可行的,因为索引操作符[]优先于间接操作符*

票数 2
EN

Stack Overflow用户

发布于 2018-01-23 22:11:35

通过将指针放在*p2中取消引用,您引用的地址太多了。(星号)

您应该能够使用下面这样的内容:

代码语言:javascript
复制
BIGNUM p[2][2];

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

还可以使用另一种方法,您可以在其中使用width=2和height=2

代码语言:javascript
复制
BIGNUM *p = calloc(width * height, sizeof(BIGNUM));

然后使用如下形式引用它(示例中的变量):

代码语言:javascript
复制
p[i*width+j] = BN_new();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48403289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档