Передача массива в функцию изменяет функцию sizeof(array)
РЕДАКТИРОВАТЬ: я считаю, что этот вопрос отличается от Как мне определить размер моего массива в 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;
}