【牛】请教兄弟姐妹们一个疑惑的问题,多谢

lrj2005 2009-02-02 10:22:33
1、请看下面这个问题:
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i< sizeof(str)/sizeof(str[0]); ++i )//为什么这儿sizeof(str)得到的是4呢?
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}


int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "aBcDe";
cout << "str字符长度为: " << sizeof(str)/sizeof(str[0])<< endl;//这儿sizeof(str)得到的是6 UpperCase( str );
cout << str << endl;

cin.get();
return 0;

}
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kostion 2009-02-02
  • 打赏
  • 举报
回复
如果要达到你的目的 char *str = "aBcBe";这样就可以了
lrj2005 2009-02-02
  • 打赏
  • 举报
回复
ok,多谢二位,长见识了,呵呵
waizqfor 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 waizqfor 的回复:]
引用楼主 lrj2005 的帖子:
1、请看下面这个问题:
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i < sizeof(str)/sizeof(str[0]); ++i )//为什么这儿sizeof(str)得到的是4呢?
if( 'a' <=str[i] && str[i] <='z' )
str[i] -= ('a'-'A' );
}


int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "aBcDe";
cout < < "str字符长度为: " < < sizeof(str)/size…
[/Quote]
补充一下 第一准确的说 应该是调用函数参数时 如果形参是数组 那么在计算字节大小的时候 数组名就退化为指针 指针是4个字节 所以得到的字节数是4
waizqfor 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 lrj2005 的帖子:]
1、请看下面这个问题:
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i < sizeof(str)/sizeof(str[0]); ++i )//为什么这儿sizeof(str)得到的是4呢?
if( 'a' <=str[i] && str[i] <='z' )
str[i] -= ('a'-'A' );
}


int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "aBcDe";
cout < < "str字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl;//这儿…
[/Quote]
for( size_t i=0; i < sizeof(str)/sizeof(str[0]); ++i )//参数传递 数组名退化为指针所以是4个字节
sizeof(str)//正常的计算数组的字节数 所以是6个字节
yangkunhenry 2009-02-02
  • 打赏
  • 举报
回复
for( size_t i=0; i < sizeof(str)/sizeof(str[0]); ++i )//为什么这儿sizeof(str)得到的是4呢?

--------------------------------------

数组做参数退化为相应的指针
指针就占四个字节的

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧