【发布时间】:2022-01-30 14:06:03
【问题描述】:
我想了解如何在不使用 sizeof 且不在 main 函数中的情况下知道数组的大小。 我真的很想了解为什么我的代码在其他函数中执行时不起作用。(在 main 中它与 sizeof 相同)。 >>> 我得到的结果是一些垃圾号码
*with char array 可以理解,但我不知道如何使用其他数据说明符。
#include <stdio.h>
void arrSize(int a[],int b[]){
int size_a = *(&a+1) - a;
int size_b = *(&b+1) - b;
printf("%d,%d",size_a,size_b);
}
int main(){
int arr[] = {2,12,14,16};
int brr[] = {8,53,2,4,16};
arrSize(arr,brr);
return 0;
}
【问题讨论】:
-
你不知道。您需要将大小作为附加参数传递给函数。
-
简而言之,你不能。
int []是一个未知大小的数组。程序员有责任不读取数组之外的内容。通过传递另一个参数来指示大小或通过其他方式。 -
这能回答你的问题吗? Finding length of array inside a function 和 How do I determine the size of my array in C?(也请阅读最佳答案!)
-
另外,“数组大小”是什么意思?使用的元素数量或存储字节数?
标签: arrays c pointers implicit-conversion function-declaration