先看一个例子:
#include <string.h>
#include <stdio.h>
int main()
{
char buf[] = {1, 2, 0, 2, 3, 4, 5, 6, 7};
char *p = buf;
char *temp = "12345";
char *temp1 = "12345\r\n";
printf("temp sizeof:%d\r\ntemp1 sizeof:%d\r\n", sizeof(temp), sizeof(temp1));
printf("temp strlen:%d\r\ntemp1 strlen:%d\r\n", strlen(temp), strlen(temp1));
printf("p strlen:%d\r\np sizeof:%d\r\n", strlen(p), sizeof(p));
return 0;
}
输出的结果如下:
temp sizeof:8
temp1 sizeof:8
temp strlen:5
temp1 strlen:7
p strlen:2
p sizeof:8
分析:
strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等
指针p的使用strlen函数的话遇到'\0'就会结束这个函数,意思以为指针p中只有两位数,指针p使用sizeof的情况是64位的话是8,如果是32位的话是4;