有没有办法在C中创建一个函数来获取数组的大小?

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

如何在C中创建一个函数来获取数组的大小? 函数和数组不属于同一作用域。 例如:

int func(int arr[]);
int main(){
int arr[5];
}
int arr_length(int arr[]){
int length = sizeof(arr)/sizeof(int);
return length;}

上面的函数的问题在于它将 arr 视为指针,因此它具有指针的大小

arrays c pointers
1个回答
-1
投票

你正在做的事情表明了对数组在 C 中如何工作的误解。

在 C 中,数组只不过是指向第一个元素的指针。没有描述其长度的关联数据 - 你,程序员,需要提供它。

这意味着您:

  • 需要传递一段数据来指示数组中元素的数量到每个将指针传递到数组第一个元素的函数
  • 创建一些更高级别的结构(
    struct
    class
    ),以聚合的方式将两部分数据组合在一起

请注意,C 中的某些类型,例如

char *
(“字符串”)是 null 终止的,这意味着它们用特殊字符表示数组的结尾。
\0
,其字面值为零 (0)。字符串能够以这种方式工作,因为字面值 0 不是有效的 ASCII 字符 - 或者至少它作为“空字符”具有特殊含义。

© www.soinside.com 2019 - 2024. All rights reserved.