strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)
这是百度百科给出的strlen()的含义,说白了strlen()就是一个放在string.h这个头文件中的一个函数,其原型为: unsigned int strlen (char *s),返回值是字符串的长度,设计这个函数的目的是计算 字符串 字符串 字符串 的长度 不是 数 的长度。
先来说一下什么事字符串:
char ch1[30] = { ‘S’, ‘t’, ‘a’, ‘y’, ’ ', ‘h’, ‘u’, ‘n’, ‘g’, ‘r’, ‘y’, ‘,’, ‘S’, ‘t’, ‘a’, ‘y’, ’ ', ‘f’, ‘o’, ‘o’, ‘l’, ‘i’, ‘s’, ‘h’, ‘.’ };这就是初始化了一个字符串数组
char ch2[30] = “Stay hungry,Stay foolish.”; 这是ch1的简化版
这里直接举个例子:
#include
#include //strlen() 放在这个库中
int main()
{
char ch1[30] = "Stay hungry,Stay foolish.";
char ch2[30] = { 'S', 't', 'a', 'y', ' ', 'h', 'u', 'n', 'g', 'r', 'y', ',', 'S', 't', 'a', 'y', ' ', 'f', 'o', 'o', 'l', 'i', 's', 'h', '.' };
printf("strlen(ch1)=%d strlen(ch2)=%d ", strlen(ch1),strlen(ch2));
return 0;
}
这是我自己写的strlen()函数的原型可以辅助理解一下strlen的作用:
unsigned int Mystrlen(char* str)
{
unsigned int length = 0;
while ((*str) != '\0')
{
length++ ;
str++ ;
}
return length;
}
C语言中sizeof( )是一个关键字,也可以看作是一个运算符,一个单目运算符(作用对象只有一个表达式)。 它的作用对象是变量类型,或者是变量。
对象为变量类型时,它会算出该变量类型在你计算机上的字节大小:
int main()
{
printf("sizeof(char)=%d\nsizeof(short)=%d\nsizeof(int)=%d\nsizeof(long)=%d\n", sizeof(char),sizeof(short),sizeof(int),sizeof(long));
printf("sizeof(float)=%d\nsizeof(double)=%d\nsizeof(char*)=%d\nsizeof(int*)=%d\n", sizeof(float), sizeof(double), sizeof(char*), sizeof(int*));
return 0;
}
int main()
{
char ch1[30] = "Stay hungry,Stay foolish.";
char ch2[30] = { 'S', 't', 'a', 'y', ' ', 'h', 'u', 'n', 'g', 'r', 'y', ',', 'S', 't', 'a', 'y', ' ', 'f', 'o', 'o', 'l', 'i', 's', 'h', '.' };
char ch3 = 's';
int a = 3;
printf(" sizeof(ch1)=%d\n sizeof(ch2)=%d\n sizeof(ch3)=%d\n sizeof(a)=%d\n", sizeof(ch1), sizeof(ch2), sizeof(ch3), sizeof(a));
return 0;
}
区别从上方的例子中就可以看出,strlen是只针对于计算字符串长度的一个函数 ,而sizeof则是一个运算符一个关键字,sizeof针对的对象的范围要广很多。
就对于计算字符串长度来说,一个字符串存于一个数组中,sizeof是在计算这个数组的大小,而strlen是在计算这个数组中有多少字符。
例子:
int main()
{
char ch1[30] = "Stay hungry,Stay foolish.";
printf(" strlen(ch1)=%d\n sizeof(ch1)=%d \n\n", strlen(ch1), sizeof(ch1));
return 0;
}
菜鸟总结,有错误的地方希望指正,谢谢。