C语言中strlen与sizeof的区别

演示代码

代码如下,以代码阐述他们的用法,并展示实验结果,并对实验结果进行解析。

#include
#include 
#include
#include 
#include 
int main()
{
		char *p = "Wenbin";
	char arr[128] = "Meet you";
	char arr2[] = "Love you";
	printf("p的sizeof     :%d\n",sizeof(p));		//好像算到地址去了 
	printf("arr的strlen   :%d\n",strlen(arr));		//strlen 用于测量有效字符长度,
	printf("===============================================================\n"); 
	printf("arr2的strlen  :%d\n",strlen(arr2));		//strlen 用于测量有效字符长度,
	printf("sizeof:char*  :%d\n",sizeof(char *));	//strlen 用于测量有效字符长度,
	printf("sizeof:int*   :%d\n",sizeof(int *));	//指针大小 
	printf("sizeof:arr    :%d\n",sizeof(arr[0]));	//第一个元素的大小 
	printf("===============================================================\n"); 
	printf("sizeof:arr    :%d\n",sizeof(arr));		//数组的大小 
	printf("sizeof:arr2    :%d\n",sizeof(arr2));		//数组2的大小 
	printf("p的sizeof     :%d\n",sizeof(p));		//p是一个char *,sizeof来计算的时候,得出是计
													//算机用多少字节来表示一个地址
	printf("===============================================================\n"); 
	printf("*p的sizeof     :%d\n",sizeof(p));		//测试*p的sizeof的大小 
	printf("*p的strlen     :%d\n",strlen(p));		//测试*p的strlen的大小 
	printf("arr2的strlen   :%d\n",strlen(arr2));
	printf("char*的sizeof  :%d\n",sizeof(char*)) ;



	return 0;
 
}

程序运行结果如下:

p的sizeof     :4
arr的strlen   :8
===============================================================
arr2的strlen  :8
sizeof:char*  :4
sizeof:int*   :4
sizeof:arr    :1
===============================================================
sizeof:arr    :128
sizeof:arr2    :9
p的sizeof     :4
===============================================================
*p的sizeof     :4
*p的strlen     :6
arr2的strlen   :8
char*的sizeof  :4

实验结果解析:

1.sizeof算的是数据类型占有的大小,有时算得的是地址的大小,当用于计算整个数组的大小时,算得的结果是数组的大小,如arr2[128]的大小是128. 而算一个数组成员的话,就是直接一个数组成员的大小。 
2.strlen求得是有效字符的长度,不包括数组尾的"\0",如程序中所见;strlen是函数,传入地址即可算得字符串的有效长度,传入参数为数组名或者字符串指针地址也可。 代码中也附有一些解析。

你可能感兴趣的:(C语言,c语言,qt,c++)