问题标签 [const-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
981 浏览

c++ - const void (* 到函数)

有什么区别:

void (* const algorithm)();

void const (* const algorithm)();

在处理const指向静态方法的指针时?

const我知道,如果指针指向不应修改的内存,则使用指向变量的指针是有意义的,如this answer中所述。但是,函数地址在运行时不是有效地保持不变吗?

我问这个的原因是,作为函数参数的第二个选项不起作用。

编辑

这是无法编译的代码。

如果函数a()具有返回类型,则上面的示例有效const void

0 投票
1 回答
147 浏览

c - 指向全局 volatile 的静态 const 指针

如何声明一个指向全局 volatile 的静态 const 指针?

到目前为止我有这个,但我不确定它是否正确:

编辑: 我这样使用它:

对于那些想知道我为什么要使用该指针的人:我可能会在每次编译之间更改我正在使用的变量,并且不想在整个文件中更改名称,所以这样我就更改了一次。或多或少类似于宏或 const 全局变量。

这个对吗?

编辑: 它在 gcc 上编译

0 投票
1 回答
105 浏览

c - 如何正确回收结构?

我试图了解提供结构的创建/回收功能的常见习语(良好做法)是什么。这是我尝试过的:

我收到了警告

这很清楚。所以我倾向于将回收方法定义如下:

警告消失了,但我不确定它是否容易出错。

那么将结构回收方法参数定义为指向 const 结构的指针是一种常见的做法,这样我们就可以避免在任何时候强制转换为非 const 并在回收方法实现中执行一次这种脏强制转换?

0 投票
4 回答
1327 浏览

c++ - 如何通过具有非常量指针键的映射中的常量指针键查找

以下 C++ 代码无法编译,因为它将非常量指针传递给find()需要 const 指针的函数。

有没有办法在不改变地图类型或使变量mykey非常量的情况下进行查找工作?毕竟函数find()没有修改指向的对象,它只是比较指针。

0 投票
1 回答
49 浏览

c++ - 将 const 引用/指针传递给用于存储的类的首选方法,而不是复制引用的对象

例子:

所以目标是存储指向某个外部对象的 const 指针,而不是存储外部对象内容的副本。

  • 通过 const 引用传递:Foo(const Bar& bar)
    • 将对象传递给构造函数的常见习语,许多程序员会认为 Foo 将存储 Bar 的副本而不是指针/引用本身。
    • 调用者可以通过一个临时的。这可以通过删除右值重载来防止Foo(const Bar&&) = delete。然而,这并不是万无一失的,因为您仍然可以通过一个接受 const 引用并返回 const 引用的函数来偷运临时对象。Foo afoo(std::min(Bar{}, anotherBar));例如。
  • 通过 const 指针传递:Foo(const Bar* bar)
    • 必须检查 nullptr,这是一个运行时检查,编译时机制是首选。
    • 仍可临时走私:Foo afoo(&std::min(Bar{}, anotherBar));

以上哪个是首选,为什么?或者有没有更好的方法来做到这一点,不会受到上述问题的影响?

0 投票
3 回答
428 浏览

c++ - 为什么不能引用指针以用于常量分配字符串文字

我可以使指针指向字符串文字,它将字符串文字转换为常量指针,但对指针的引用不能分配字符串文字,例如:

有一个错误,编译器说我不能将数组转换为指针引用,我很好奇,为什么它不正确?

0 投票
3 回答
85 浏览

c - 在 C 中修改 const 指针

我试图理解为什么以下代码可以编译并运行良好。我希望使用datainside的任何分配都f不会编译时出现 gcc 错误assignment of member ‘i’ in read-only object。是否有某种异常,因为data.i是动态分配的?

0 投票
1 回答
107 浏览

c++ - 将 int * const 转换为 long int * const 警告

这很可能以前曾以其他方式被问过(如果不是,我会感到惊讶),但如果是的话,我很难找到它。

鉴于:

我收到警告:

但我不确定为什么我会收到这个警告,因为重新转换也应该是一个 const 指针——只是指向不同的类型。我想实现相同的代码(如果忽略警告则有效),但没有警告。

0 投票
0 回答
44 浏览

c++ - C++ 拥有作为指向另一个类的指针(或引用)并且可以处理 const 和非 const 情况的类成员的最佳方式

考虑以下示例代码。它按预期编译和工作。但是,如果我在 main 函数的第一行的开头添加“const”,它将无法编译,因为 B 类需要一个指向 A的指针,并且添加 const 后,我​​们将有一个指向const A的指针。模板化 B 是一种选择,但我想知道是否有更清洁/更好的解决方案。我愿意接受各种建议,包括将 B 移到 A 中(如果有帮助的话)(B 仅供 A 使用)。

0 投票
2 回答
113 浏览

c - 指向包含互斥体的结构的 const 指针

我有这样的事情:

some_func不修改s,我想将签名更改为

但是对pthreads函数的调用不允许我在没有警告的情况下这样做。

有什么常见的习语可以用来表示函数内部的逻辑上将some_struct_t是不变的吗?

有什么方法可以some_func从另一个没有进行强制转换的函数内部使用const some_struct_t *s