C语言数组长度详解

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.com/zh-cn/cpp/standard-library/cpp-standard-library-reference?view=msvc-170&viewFallbackFrom=vs-2019

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

violet~evergarden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值