非是非
Thinking, Express
|

测验题目

问题:
    运行下图中的C++代码,输出是什么?
    
    int SizeOf(char pString[]) {
      return sizeof(pString);
    }
    
     
    
    int main(int argc, char* argv[]){
      char* pString1 = "google";
      int size1 = sizeof(pString1);
      int size2 = sizeof(*pString1);
    
      char pString2[100] = "google";
      int size3 = sizeof(pString2);
      int size4 = SizeOf(pString2);
    
      printf("%d, %d, %d, %d", size1, size2, size3, size4);
    
      return 0;
    }
    
    
    参考答案:
    4, 1, 100,
    4。pString1是一个指针。在32位机器上,任意指针都占4个字节的空间。*pString1是字符串pString1的第一个字符。一个字符占一个字节。pString2是一个数组,sizeof(pString2)是求数组的大小。这个数组包含100个字符,因此大小是100个字节。而在函数SizeOf中,虽然传入的参数是一个字符数组,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。
    非是非 | 联系 | 关于 | 向开发者捐赠 |

    版权所有 © 非是非, 2007~2015

    我觉得这个站点或页面: 有用 没用 有趣 无趣 有错 |