如果能确定所指变量为字符串地址,可以用strlen(p)取得字符串长度。
strlen能返回字符串的长度是因为它认为到'\0'就是结束的地方
sizeof和内存无关,只根据数据类型来判断,而数据类型的长度和操作系统有关
1:
char* a = "c:\\temp\\a.txt\n";
int b = strlen(a);
2:
char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12字节
cout<< sizeof(p) << endl; // 4字节
计算数组和指针的内存容量
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4字节而不是100字节
}
这里 数组退化为指针
3:
char buffer[100];
char* p = buffer ;
int bufsize = sizeof( buffer ) / sizeof( *p ) ;
可以看到,bufsize是100,得到了那个数组的大小。或者这些写更直观:
int bufsize = sizeof( buffer ) / sizeof( buffer[0] ) ;