25得票2回答
参考文献是否有存储位置?

引用是否有存储位置,还是只是另一个位置的别名?这在C++版本之间是否不同,还是在所有C++版本中都保持一致?如果引用有一个存储位置,是否只允许像指针类型一样进行值语义? 当您将引用用作以下方式时,它会如何工作:struct aStruct{ int aVariable; aClas...

23得票3回答
const char* vs const char[]

据我所知,像"Hello"这样的字符串字面值在C中被视为char*,在C++中被视为const char*,而且对于这两种语言,字符串字面值都存储在只读内存中。(如果我有错,请纠正我) #include <stdio.h> int main(void) { const ...

12得票2回答
一个有关函数中返回本地指针变量的问题。

我知道函数中的变量使用堆栈空间。当函数退出时,这些空间被释放。这就是为什么我们应该在函数中将指针变量声明为静态变量的原因。然而,我发现下面的代码也可以正常运行。 gcc版本是:gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) #include &...

10得票1回答
C++默认初始化是否保留之前的零初始化?

如果具有静态存储期的对象的C++构造函数未初始化成员,是否需要保留先前的零初始化,还是将成员留有不确定值? 我对C++规范的理解是,它自相矛盾。 示例: #include <iostream> struct Foo { Foo(); int x; } object; Fo...

9得票1回答
用户定义字符串字面值的底层字符数据存储持续时间

快速设置:我想在程序中将字符串作为指针和大小传递。我有一个String类和一个用户定义的文字量用于构建文字量字符串: struct String { const char *ptr; size_t sz; }; inline constexpr String operator "" _st...

8得票3回答
如何在只读数据区初始化一个可变长数组并创建指向它的指针?

在 C 语言中,代码 char *c = "Hello world!"; 将Hello world!\0存储在rodata中,并使用指向它的指针初始化c。如果要使用其他方法而不是字符串,应该如何操作? 具体而言,我正在尝试定义自己的字符串类型。 typedef struct { ...