我正在尝试将数组中的元素数作为指针作为代码,如下所示:
#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
[不幸的是,您无法获得分配有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;
}