1、代码演示:
#include
#include
int main()
{
char str[] = "yescanIcan";//该字符串包含10个字符和1个字符串结束符'\0'
char *p = str;
printf(" sizeof(str):%d \n sizeof(p):%d \n strlen(str):%d \n strlen(p):%d\n",
sizeof(str),sizeof(p),strlen(str),strlen(p));
return 0;
}
2、run result:
sizeof(str):11
sizeof(p):8
strlen(str):10
strlen(p):10
3、结果讨论:
从上面得出的结论:
1、srtlen()得出的是字符串的字符长度,直观长度,无论传入的是字符串指针还是字符串数组名;
2、sizeof()得出的是,
- 对于传入的是字符串数组名时,是字符串所占内存空间,单位是字节,包含字符串结束符;
- 对于传入的是字符串数组名的指针或指向字符串的指针时,是指针变量所占内存空间,一般对于32bit系统,该值为4(字节),对于64bit系统,该值为8(字节)。
3 、一般一个字符串的sizeof()不得小于其strlen()值+1,即有
sizeof(str) >= strlen(str) + 1。
欢迎各位前来学习和讨论哈,能指出问题最好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)