c++ - 字符串 "sizeof"的意外结果

标签 c++ c sizeof

为什么 sizeof 在以下情况下会打印不同的值:

printf("%d",sizeof("ab")); //print 3

char* t="ab";
printf("%d",sizeof(t)); //print 4

在第一种情况下,我有 2 个字符... sizeof 不应该打印 2 吗?因为它们是 2 个字节?

最佳答案

Strings in C are null terminated.

内存中的“ab”看起来像'a' 'b' '\0'

t是一个指针,所以size是4。

关于c++ - 字符串 "sizeof"的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463325/

相关文章:

c++ - 在模板 lambda 中隐式捕获 const 变量,而未指定捕获默认值

c++ - 如何在运行时检索我的 dylib 的路径?

c - 将数组(结构成员)传递给函数

c - 这两行有什么区别?

c++ - 模板参数列表太少——模板方法的特化,g++

c++ - QtQuickControls,不适用于 Windows

c++ - 在类中构建结构

c - 实现二叉树时出现Segmentation Fault (Core Dumped)

c - getopt_long 长选项有效但短选项无效

c++ - 在 typedef 上使用 sizeof 而不是局部变量