
C++ 怎么得到字符串指针指向的内存块的大小?
voidfun(char*str){intn=sizeof(str);//B}voidmain(){charstr[20]={0};intsize=sizeof(str)...
void fun(char* str)
{
int n=sizeof(str); //B
}
void main()
{
char str[20]={0};
int size=sizeof(str); //A
fun(str);
}
如上一段代码,在main函数中声明了一个str字符数组,测试发现A句size的值和B句n的值不一样,B句的值永远是4,而size等于str数组的大小20。有资料说当把str作为参数传递到fun函数中时它已经退化成指针,所以函数中sizeof运算的结果总是4.
那有没有什么办法在fun函数中得到str指向的内存块的真正大小,也就是这里的20? 展开
{
int n=sizeof(str); //B
}
void main()
{
char str[20]={0};
int size=sizeof(str); //A
fun(str);
}
如上一段代码,在main函数中声明了一个str字符数组,测试发现A句size的值和B句n的值不一样,B句的值永远是4,而size等于str数组的大小20。有资料说当把str作为参数传递到fun函数中时它已经退化成指针,所以函数中sizeof运算的结果总是4.
那有没有什么办法在fun函数中得到str指向的内存块的真正大小,也就是这里的20? 展开
11个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询