【发布时间】:2015-08-07 20:04:01
【问题描述】:
我有一个以常量矩阵和向量作为输入的函数,我正在尝试按如下方式迭代列
void matx_mut(const int *A, const int **B, unsigned int c, unsigned int a_col_start, unsigned int a_col_end, unsigned int a_row_start, unsigned int a_row_end)
{
unsigned int i
int *a_ptr, *b_ptr;
// do initial processing
for( i = a_col_start; i <= a_col_end; i++)
{
// some code
a_ptr = &A[a_col_start];
b_ptr = &B[i][a_row_start];
// more code
}
}
但是,我收到以下警告“警告 C4090: '=' : different 'const' qualifiers”。我不能将 a_ptr 和 b_ptr 更改为 const,因为我在每次迭代时都在更改它们的值,对吧?
除了在第二个 for 循环中声明两个指针之外,有没有解决此警告的好方法。
我尝试使用初始指针 A 和 B,但这使得它不容易阅读:(
【问题讨论】:
-
您是否(不是)错过了
;? -
和类似
a_row_start的定义? -
如果你修改
a_ptr[0],你实际上是在修改A[a_col_start],这正是const int *A试图阻止你做的事情。 -
有理由将它们设为 const 吗?如果要更改它们的值,则不应使用 const。
-
@Sourav Ghosh,谢谢,我忘记输入了。我编辑了我的原始帖子。