我被要求对一个 int 数组求和并返回不使用索引的总和。 (函数需要获取数组和大小)
我知道我应该设置一个指向数组的指针,并将该指针与数组地址进行比较,并使用指针++来运行该数组。
不过,我写下了以下代码:
int sumArray(int nNumArray[], int nSize)
{
int nSum = 0;
while(*nNumArray <= &nNumArray[nSize-1])
{
nSum += *nNumArray;
nNumArray++;
}
return nSum;
}
效果很好,
事情是 *nNumArray 指的是值,而 &nNumArray[nSize-1] 指的是地址。
我试图理解这种方式是如何运作的。
将欣赏一些见解。谢谢。
最佳答案
while
循环条件不正确:
while(*nNumArray <= &nNumArray[nSize-1])
因为您正在将整数 (*nNumArray)
与指针 (&nNumArray[nSize-1])
进行比较。编译器必须对此语句发出警告消息。
相反,您可以这样做:
int sumArray(int nNumArray[], int nSize)
{
int nSum = 0;
while(nSize--)
{
nSum += *nNumArray;
nNumArray++;
}
return nSum;
}
关于c - 不使用索引的指针和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53994808/