c - 不使用索引的指针和数组

标签 c arrays pointers

我被要求对一个 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/

相关文章:

CUDA程序返回随机结果

c - 父进程,创建 2 个子进程并使用管道发送数据

c++ - 将现有内存映射到 Matlab mxArray 而不会浪费内存

c++ - isspace 宏与 locale_facets.h 中的 isspace 函数冲突

c - 带文件IO的链表

php - 使用php将关联数组插入mysql

arrays - 为什么我的数组中没有打印字符串?

c# - 查找整数列表中是否存在整数

c++ - 尝试引用已删除函数的唯一指针

c++ - 将派生类的地址分配给基类指针