sizeof和strlen(一)

在C/C++中,在32位编译系统中,一个指针占4个字节,所以sizeof(*)等于4.
对于一个数组,sizeof的是这个数组的所占的总空间.
sizeof在计算未分配数组是多大时,须记得除了初始化值外,还需加上一个'\0'.
strlen计算字符数组或指针中字符串长度,即从起始位置到'\0'的字符数,不包含'\0'.


实例:


char *str1 = "abcd";
char str2[] = "abcd";
char str3[5] = {'a'};
char str4[4] = {'a','b','c','d'};


sizeof(str1) = 4;
sizeof(str2) = 5;
sizeof(str3) = 5; strlen(str3) = 1;
sizeof(str4) = 4; strlen(str4) = ? (一个不确定的值,因不清楚程序会运行到哪里碰到‘\0’字符)




#include "stdio.h"


void myfun(char *s)
{
printf("sizeof(s) = %d,strlen(s) = %d \n",sizeof(s),strlen(s));
}


void main()
{
char *str1 = "abc";
char str2[] = "abcd";
char str3[6] = "abcde";


mafun(str1);
mafun(str2);
mafun(str3);
}


上述函数运行结果显示为:


sizeof(s) = 4,strlen(s) = 3
sizeof(s) = 4,strlen(s) = 4
sizeof(s) = 4,strlen(s) = 5


从上述结果可知,在调用的myfun函数里面,不管传入的是指针还是数组,其实内部全部是指针在调用,所以sizeof的结果全为4.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值