一个cpp的小问题,大家帮我看看.问题我写在代码里了.

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:20:11
#include<iostream.h>
void UpperCase(char str[])
{
cout<<"str length is:"<<sizeof(str)<<endl;//这里为什么是长度是4?
for(int i=0;i<=sizeof(str);i++)
{
if('a'<=str[i]&&str[i]<='z')
str[i]-=('a'-'A');
}

}
void main()
{
char str[100]="aBcdefg";
cout<<"str length is:"<<sizeof(str)<<endl;//用sizeof() 是的是把"/n"也算做一个字符了?
UpperCase(str);
cout<<str<<endl;
}

void UpperCase(char str[]) 里,char str[]这样定义是把str当作指向数据类型的地址,而该指针为char型,所以sizeof(str)=4;
在main函数里,定义了str[100],是数组,数组的每一个元素都是char型,各占1字节,数组长度为100,所以sizeof(str)=100*1=100.

1。主函数调用 UpperCase将数组首地址赋给str,UpperCase(char str[])
中的str是一个指针变量,它占用4个字节
2.cahr str[100]占用100个字节空间当然sizeof(str)等于100了