Найти количество элементов массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Если делать так, то все получается правильно. Выдает 5
#include <stdio.h>
#include <conio.h>
 
int main(){
    int u[]={1, 4, 1, 2, 8};
 
    printf("Kolichestvo elementov massiva %d\n", sizeof(u) / sizeof(u[0]));
 
    _getch();
    return 0;
}
Но мне нужно задать функцию, т.е. пытаюсь сделать вот так
#include <stdio.h>
#include <conio.h>
 
int degr(int a[]){
    return sizeof(a) / sizeof(a[0]);
  }
 
int main(){
    int u[]={1, 4, 1, 2, 8};
 
    printf("Kolichestvo elementov massiva %d\n",degr(u));
 
    _getch();
    return 0;
}
Получается 1. Помогите пожалуйста, задать функцию правильно
Кто-нибудь может мне помочь? Почему когда передаю массив в функцию, не получается определить кол-во элементов массива? Может есть другой способ решения этой задачи?

Решение задачи: «Найти количество элементов массива»

textual
Листинг программы
#define arr_size(arr)  (sizeof arr / sizeof arr[0])
 
...
 
    int a[10];
 
    printf("%d\n", arr_size(a));

Объяснение кода листинга программы

  1. В коде определен макрос arr_size, который принимает в качестве аргумента массив и возвращает его размер в байтах, разделив sizeof на sizeof первого элемента массива.
  2. Задается массив a размером 10 элементов.
  3. Вызывается функция printf с аргументом arr_size(a), которая выводит на экран размер массива a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы