sizeof和strlen的区别

#include<stdio.h >
#include <string.h>
int main()
{
    char str1[100] = "abcde";//字符数组
    char str2[] = "abcde";
    char *str3 = "abcde";//字符串常量
    char str4[100] = "abcde\0ijk\n";
    char str5[] = "abcde\0ijk\n";
    char *str6 = "abcde\0ijk\n";
    printf("%d,%d\n",sizeof(str1),strlen(str1));//100 5
    printf("%d,%d\n",sizeof(str2),strlen(str2));//6 5
    printf("%d,%d\n",sizeof(str3),strlen(str3));//4 5
    printf("%d,%d\n",sizeof(str4),strlen(str4));//100 5
    printf("%d,%d\n",sizeof(str5),strlen(str5));//11 5
    printf("%d,%d\n",sizeof(str6),strlen(str6));//4 5
    return 0;
}

sizeof和strlen的区别

注:计算字符串的有效长度,不包含'\0'。
sizeof(...)是运算符,参数可以是数组、指针、类型、对象、函数等。作用是返回一个对象或者类型所占的内存字节数。

strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。作用是返回字符串的长度。