1.sizeof与strlen的定义
sizeof是计算括号内内存大小的操作符,即多少字节,常见用法为计算数值或数值类型的内存大小。
#include<stdio.h>
int main()
{
int c = 10;
printf("%d\n", sizeof(c));
printf("%d\n", sizeof c);
printf("%d\n", sizeof(int));
return 0;
}
由于int类型的类型内存大小为4个字节,则运行都为4而strlen为一个计算字符串长度大小的函数,它的底层逻辑是在内存上由起始点向后检索直到\0,所以可能存在越界查找,停下来然后计算。
int main()
{
char arr[100] = "abcdef";
printf("%d", strlen(arr));
return 0;
}
char类型的数组内存储了一个字符串,而字符串结尾通常有一个看不见的\0结尾。
可理解为a,b,c,d,e,f,\0,所以长度为6.运行如下:
2.与数组结合应用理解。
创建两个char类型的数组,区分字符数组和字符串数组,结合以上定义。
int main()
{
char arr1[3] = { 'a', 'b', 'c' };
char arr2[] = "abc";
printf("%d\n", strlen(arr1));//
arr1数组名单独在括号里代表整个数组,而字符数组内无\0,则打印一个随机值
printf("%d\n", strlen(arr2));
字符串则如1介绍
printf("%d\n", sizeof(arr1));
一个char类型数据大小为1,则应该为3
printf("%d\n", sizeof(arr1));
一个char类型数据大小为1,则应该为3
return 0;
}
数组名单独放在括号内,代表整个数组内容。
3.与指针地址结合理解
sizeof中地址即指针一律平等,不要门缝里看指针把指针看扁了。
数组名的意义:
1.
sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。
2.
&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。
3.
除此之外所有的数组名都表⽰⾸元素的地址。
![](https://i-blog.csdnimg.cn/blog_migrate/a36d10dbb48e7ab0193977e1fbeafb8a.png)