none
C++数组传递问题 RRS feed

  • 问题

  • #include <iostream>
    using namespace std;

    void ToUpper(char MyCharacters[]);

    int main()
    {
    char Characters[]="albert";
    ToUpper(Characters);
    cout<<Characters<<endl;
    return 0;
    }
    void ToUpper(char MyCharacters[])
    {
    int NUM=sizeof(MyCharacters);//此处的“NUM”怎么会是4?
    for(int i=0;i<NUM;++i)
    MyCharacters[i]-=32;
    }
    2013年6月21日 8:43

全部回复

  • MyCharacters是字符串的首地址,而在windows中地址就是占4个字节。获取长度你可以用strlen()

    2013年6月25日 11:56
  • 数组的传递,其实就是指针不包含长度的传递
    2013年6月29日 3:06
  • MyCharacters是字符串的首地址,而在windows中地址就是占4个字节。获取长度你可以用strlen()

    这个分析的非常对,楼主不信把那个字符串多加几个字母,NUM的结果还是4,但用strlen()就可以得到正确的NUM的值。
    2013年8月11日 23:41
  • 数组名作为参数传入到函数内,实际就是传了一个指针进入函数,只是数组的首地址, sizeof 操作后,当然会使4,,这个经常作为面试题来考察程序员知识是否扎实
    • 已建议为答案 xiahualin 2014年3月31日 17:52
    2014年3月31日 15:12