MST

星途 面试题库

面试题:C++ 中字符常量与字符串常量在sizeof运算结果上的差异

在C++ 中,定义一个字符常量 `char ch = 'a';` 和一个字符串常量 `const char* str = "abc";`,请分别说明对 `ch` 和 `str` 使用 `sizeof` 运算符得到的结果是什么,并解释原因。
25.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 对于char ch = 'a';
    • sizeof(ch)的结果是1。
    • 原因:ch是一个char类型的变量,在C++中,char类型通常占用1个字节的内存空间,sizeof运算符返回的是操作数所占用的字节数,所以sizeof(ch)为1。
  2. 对于const char* str = "abc";
    • sizeof(str)的结果在32位系统下通常是4,在64位系统下通常是8。
    • 原因:str是一个指向字符串常量的指针,sizeof作用于指针时,返回的是指针本身所占用的字节数。在32位系统中,指针通常占用4个字节来存储内存地址;在64位系统中,指针通常占用8个字节来存储内存地址。而字符串常量"abc"本身占用4个字节(包括字符串结束符\0),但sizeof(str)测量的是指针的大小,并非指针所指向的字符串的大小。