作为数组的指针中的元素数

问题描述 投票:0回答:1

我正在尝试将数组中的元素数作为指针作为代码,如下所示:

#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

c arrays pointers sizeof
1个回答
0
投票

[不幸的是,您无法获得分配有malloc的数组的大小(因为实际上是在获得指针的大小)。您必须始终将其存储在其他位置。由于总是分配8个元素,为什么不将其设为静态数组呢?

#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;
}
© www.soinside.com 2019 - 2024. All rights reserved.