zoukankan      html  css  js  c++  java
  • 以下代码中的两个sizeof用法有问题吗?

    void UpperCase( char str[] )

    {
    for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
    if( 'a'<=str[i] && str[i]<='z' )
    str[i]
    -= ('a'-'A' );
    }
    char str[] = "aBcDe";
    cout
    << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
    UpperCase( str );
    cout
    << str << endl;

    答:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

  • 相关阅读:
    elk 分布式数据同步
    mget 同时获取
    Jzoj1460 无题noname
    Jzoj1460 无题noname
    Jzoj1322硬币
    Jzoj1322硬币
    Jzoj1321 灯
    Jzoj1321 灯
    Jzoj1310 生日礼物
    Jzoj1310 生日礼物
  • 原文地址:https://www.cnblogs.com/byfei/p/3112242.html
Copyright © 2011-2022 走看看