将数组传递给函数会更改函数'sizeof(array)'

时间:2018-10-24 17:40:24

标签: c arrays function parameters ansi

编辑:我相信这个问题与How do I determine the size of my array in C?不同,因为该链接讨论了如何使用sizeof(nlist)) / sizeof(nlist[0])确定数组中的项目数。

我的问题是为什么在将数组传递给函数后,为什么该函数无法正常工作。

===

我是ansi C的新手,来自Python。

我有一个解析int数组的函数。通过数组的迭代取决于sizeof(nlist)) / sizeof(nlist[0])来确定数组的大小。

但是,尽管此方法在main()中有效,但在将数组传递给函数时失败。

在主文件中

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "arrayTools.h"

int main() {

    // Fill with data for testing
    int nlist[500];
    for (int i=1; i<501; i++ ) {
        nlist[i] = i;
    }

    // This successfully iterates through all 500 items
    for( size_t i = 1; i <= (sizeof(nlist)) / sizeof(nlist[0]); i++)
    {   
        printf(isItemInIntArray(i, nlist) ? "true\n" : "false\n");
    }

arrayTools.h

#include <stdbool.h>
#include <stdlib.h>

bool isItemInIntArray(int value, int arr[]){
    // This only iterates twice (i = 1, then i = 2) and then ends
    for( size_t i = 1; i <= (sizeof(arr)) / sizeof(arr[0]); i++) {
        if (value == arr[i]) { return true; }
    }
    return false;
}

0 个答案:

没有答案