1.求char类型数组  

#include<stdio.h>
//库函数strlen  返回数组长度

char arr[10];
int length = strlen(arr);//接受数组长度

注意: strlen只能用char*做参数,且必须是以''\0''结尾的!

2. sizeof()运用bug , C6384警告

运行发现sizeof(arr)作为实参传递使用时无法计算arr的总字节

只有arr数组写在运用sizeof(arr)同一函数中的直接使用才能计算

类似局部变量,【sizeof(arr)/sizeof(a[0]) 】 当数组arr与该语句在同一函数内有效

(若有循环要在同一循环内有效)

#define length 10//法一

int arr[10];

int arr_length = sizeof(arr)/sizeof(a[0]);//法二
#define length 10    //数组初始化长度自定义

最终通过不断尝试发现较为有效方法用于解题:

解决方法:C语言没有直接求数组长度的,在解题中,可直接写自己创的长度常量,或者宏定义【#define length 数组初始化长度 】 来代替常量数值

      总结:【  sizeof(a)无法得到数组的大小。为什么会这样?因为把数组作为参数传递给函数时,实际上只有数组的首地址作为指针传递给了函数。换句话说,在函数 定义中的int a[]等价于int *a。在只有地址信息的情况下,是无法知道数组里有多少个元素 的。


C++ 标准库参考 | Microsoft Docshttps://docs.microsoft/zh-cn/cpp/standard-library/cpp-standard-library-reference?view=msvc-170&viewFallbackFrom=vs-2019

更多推荐

C语言数组长度详解