深入了解strlen和sizeof

我们之前学习过strlen和sizeof的区别:

1.strlen是一个库函数使用时需要引用#include<string.h>这个头文件,而sizeof是一个运算符号;

2.strlen计算的是'\0'之前的字符个数,sizefo计算的是所占空间内存的大小,单位是字节;

3.strlen计算时不包含'\0',而sizeof包含'\0';

4.strlen遇到'\0'才结束;

5.strlen只能用char做参数,sizeof可以用类型做参数;

6.sizeof的类型是unsigned int ,是一个无符号的整型;

 现在可以更深入的学习并运用好sizeof和strlen在数组和指针的运用里:

看下面的题目来提升一下对sizeof和strlen的认知吧!

1.sizeof在整型数组中的使用:
#include<stdio.h>

int main()
{
	int a[] = { 1,2,3,4 };

	printf("%d\n", sizeof(a)); // 16
	//sizeof(数组名)是指整个数组
	//计算的是整个数组的大小,单位是字节
	printf("%d\n", sizeof(a+0)); // 4/8
	//sizeof(数组名+0)指的是首元素的地址
	//a不是单独放在sizeof里面,也没有取地址,所以指的是首元素,a+0还是首元素
	printf("%d\n", sizeof(*a));// 4/8
	//*a都是指a首元素的地址,*是对a的首元素解引用,找到的就是首元素的地址
	printf("%d\n", sizeof(a+1));// 4/8
	//这里的a指的是首元素的地址
	//a+1就是指第二个元素的地址
	printf("%d\n", sizeof(a[1]));// 4/8
	//a[0]是指数组的第一个元素
	//a[1]就是指数组的第二个元素
	printf("%d\n", sizeof(&a));// 4/8
	//&a代表的整个数组的起始地址
	//数组的地址也是地址
	printf("%d\n", sizeof(*&a));// 16
	//&a --->int(*)[4]
	//&a拿到的是数组名的地址,类型是int(*)[4]一种数组指针
	//数组指针解引用找到的是数组
	//*&a  --> a
	printf("%d\n", sizeof(&a+1));// 4/8
	//&a取的是整个数组的地址,&a+1就是在整个数组之后的一个元素
	printf("%d\n", sizeof(&a[0]));// 4/8
	//&a[0]取的是整个数组的第一个元素
	printf("%d\n", sizeof(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值