在练习二维数组的指针时,尝试用双重指针索引数组出现错误
例子如下
查找后发现是双重指针嵌套的括号没有写对
*((*k+i)+j)
*(*(k+i)+j)
这两种指针指向的位置不同
正确的方法如下
#include <iostream>
using namespace std;
void rowsum(int** a, int nrow);
int main()
{
int list1[4] = {1,2,3,4};
int list2[4] = {2,3,4,5};
int list3[4] = {3,4,5,6};
int *a = &list1[0];
int *b = &list2[0];
int *c = &list3[0];
static int *table[3] = {a,b,c};
cout << *(table) << endl;
cout << *(table + 1)<< endl;
cout << *(table + 2) << endl;
cout << endl;
for (int i = 0; i < 3; i++)
{
cout << *(table + i)<< endl;
}
rowsum(table, 3);
}
void rowsum(int** k, int nrow)
{
int sum = 0;
for (int i = 0; i < nrow; i++)
{
for (int j = 0; j < 4; j++)
{
sum += *(*(k + i) + j);
}
}
cout << sum << endl;