编辑:我相信这个问题与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;
}