区分sizeof和size和length

一、问题

①在leetcode中使用sizeof计算数组长度执行不通过,在自己vs中可以

②在leetcode中使用nums.size()计算数组长度执行通过,在自己vs不可以

③使用题目提示的n = length编译不通过,在自己vs也不可以

二、原因

leetcode使用的是容器形参,我自己vs定义没有使用容器vector,而是使用数组

①sizeof用来计算基本数据类型,如:

int arr[5];
char arr2[] = "asdfg";
char arr3[100] = "asdfg";
int *p;
int *p2 = arr;
则:
sizeof(arr) = 20 //5 个元素,每个元素占 4 字节
sizeof(arr) / sizeof(arr[0]) = 5
sizeof(arr2) = 6 //字符串末尾自动分配一个 '\0'
sizeof(arr3) = 100 //指定了大小的 char 型数组,指定多大就有多大
sizeof(int) = 4
sizeof(char) = 1
sizeof(*p) = 8
sizeof(*p2) = 8 //指针变量都是八个字节

如果用sizeof计算vector类型,则会出错,如:

有一个vector类型vec
vec中存放了 1 个元素,sizeof(vec)= 20
有一个vector类型vec2
vec2中存放了 2 个元素,sizeof(vec2)= 20

可见,sizeof计算vector类型事与愿违,并且verctor类型的大小与元素个数无关 。

②在c++中length()只用来计算字符串长度,如:

char arr[] = "abcd";
int arr2[3];
string str = "abcd";
则:
arr.length()报错
arr2.length()报错
str.length() = 4 //不是字符数组,不会自动加'\0'

③在c++中,size()可以计算字符串长度,还可以计算vector类型长度

④区分length和length(),length是属性,length()是方法.

length:对于一般集合类,取得其集合长度,例如:数组.length可以取得数组长度。

length():和c++一样,在Java中,对于一般字符串类,可以取得字符串长度

注意:length在Java中可以使用它,但在c++中不能使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值