直接给出如下程序进行操作理解
int _tmain(int argc, _TCHAR* argv[]){
//定义了一个指向char类型的指针变量str1,在栈中分配一个内存给str1,把全局区的常量"Rose_Girls"的地址赋值给str1;
char* str1 = "Rose_Girls";
//定义了一个指向char类型的数组变量,在栈中分配类存,通过全局区的常量"Rose_Girls"对str2进行赋值
char str2[] = "Rose_Girls";
/*
strlen:求的是字符串的长度,不包括字符串中的'\0‘
sizeof:求的是一种类型字节大小,也就是内存大小,'\0'是占内存的,所以也会把'\0'也要算进去的
*/
//strlen:这里大小长度不包括\0,所以求出的长度为10
printf("str1 length = %d\n", strlen(str1));
//sizeof:是求的一种数据类型的大小,这里是指针,所以输出的大小是4
printf("str1 length = %d\n", sizeof(str1));
//同理,这里输出的也是10,求的是字符串的长度
printf("str2 length =%d\n", strlen(str2));
//这里是数组,存储的时候会把“Rose_Girls”中的\0也会存储进去,所以求出的是数组内存所占空间的大小为11;
printf("str2 length = %d\n", sizeof(str2));
system("pause");
return 0;
}
输出结果如下: