Количество элементов в указателе в виде массива - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь подсчитать количество элементов в массиве в качестве указателя в соответствии с кодом:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *ptr = (int *) malloc(sizeof(int*));
    for(int i=0; i<8; i++)
        {
            printf("The number: " );
            scanf("%d", &ptr[i]);
        }

    int size = sizeof(ptr)/sizeof(int);
    printf("%d\n", size);
    return 0;
}

Я пробовал синтаксис для массива size = sizeof(ptr)/sizeof(int);, но получил неправильный ответ что составляет 1 для всех случаев. Я не знаю, как получить правильный ответ, который 8 для этого случая

1 Ответ

0 голосов
/ 10 марта 2020

К сожалению, вы не можете получить размер массива, выделенного с помощью malloc (потому что вы на самом деле получаете размер указателя). Вы должны всегда хранить это где-то еще. Поскольку вы всегда выделяете 8 элементов, почему бы не сделать его массивом stati c?

#include <stdio.h>

int main()
{
    int arr[8];
    for(int i=0; i<8; i++)
    {
        printf("The number: " );
        scanf("%d", &arr[i]);
    }
    int size = sizeof(arr)/sizeof(int);
    printf("%d\n", size);
    return 0;
}
...