演示代码
代码如下,以代码阐述他们的用法,并展示实验结果,并对实验结果进行解析。
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <conio.h>
#include <dos.h>
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:arr :%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:arr :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是函数,传入地址即可算得字符串的有效长度,传入参数为数组名或者字符串指针地址也可。 代码中也附有一些解析。