数组初始化代码:
int m = 100;
int n = 50;
int i = 0, j = 0;
float **a = (float**)malloc(m*sizeof(float*));
for (i = 0; i < m; i++)
{
a[i] = (float*)malloc(n*sizeof(float));
for (j = 0; j < n; j++)
a[i][j] = i + j;
}
a
是一个2D数组,我想遍历并更新一维数组的元素a[0]
假设我想将[0]的所有元素除以2:
for (i = 0; i < n; i++)
*a[0]++ /= 2; // instead of a[0][i] /= 2;
这似乎不起作用..
答案 0 :(得分:1)
是的,虽然它看起来像是一个功课。如果你想要更多有趣的代码,你可以在没有空格的情况下编写它,如*a[i]++/=K
,最后你可以将它附加到包含循环,例如while(p=a[i]++)*p/=K;
以使事情更加压缩。 ; - )
答案 1 :(得分:1)
我猜a
是一个二维数组,如int a[10][20]
,然后给定的语句a[i]++
是&#34; invalid
&#34;。
原因是因为a [i]是一个数组a [i]是一个不可修改的“左值”。
在上述情况下,*a[i]
有效,但不是a[i]++