问题标签 [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 回答
363 浏览

c++ - 更喜欢迭代器而不是指针?

这个问题是一个问题的一个问题,在这里有评论,但作为问题的一部分被删除。

对于那些看不到已删除帖子的人,评论是关于我在这个答案const char*中使用s 而不是s :“迭代器可能从一开始就是一条更好的路径,因为看起来这正是你的指针看起来的样子被视为。”string::const_iterator

所以我的问题是,迭代器是否持有string::const_iterators 比 s 持有任何内在价值,const char*以便将我的答案切换为string::const_iterators有意义?

0 投票
1 回答
407 浏览

c++ - 用于指针算术的 void 指针的类型转换

为了使用指针算术,void 指针的类型被转换多次。

包含数据的向量来自外部源并返回一个 void 指针以访问其数据。此外,步幅也由外部对象给出,并注意对齐要求。为了使示例简短,它并没有完全反映这两个事实。

转换为uint8_t不影响float指针指向的 ( ) 数据,因为只转换了指针的类型?

为什么它会增加constcountPointer是否const意味着指针指向的数据可能不会被更改?

为什么我必须使用reinterpret_cast<const float*>而不是在循环内static_cast<const float*>进行转换?countPointer

0 投票
2 回答
4099 浏览

c - const 指针作为函数参数的含义

我有这个函数签名:

在这个特定的上下文中,const关键字的意义是什么?

即使ptr不是const变量,我也无法修改它指向的地址,因为它是按值传递的,所以如果我有另一个这样的函数:

在它的实现内部做了这样的事情:

这不会影响传递的值(当然,在这个函数之外)。

所以问题是:使用myFunction()签名而不是签名myAnotherFunction()有什么意义?(除了你得到一个编译时错误)。

0 投票
1 回答
74 浏览

c++ - 当作为函数参数传递时,为什么我不能更改类型为“const int *”的指针的地址?

据我所知,const int *暗示我可以更改指针但不能更改数据,int * const说我不能更改指针地址但我可以更改数据,并const int * const声明我不能更改其中任何一个。

但是,我无法更改使用 type 定义的指针的地址const int *。这是我的示例代码:

代码输出:

我希望在调用至少一次之后,地址pInt会更改为指向函数内部的内部变量。但事实并非如此。我一直指向变量。Func()Func()Dummy

这里发生了什么?为什么我没有得到我期望的结果?

(IDE:Visual Studio 2015 社区版)

0 投票
2 回答
177 浏览

c++ - 如何初始化 int *const *const?

我需要一个具有固定宽度和高度的二维数组,它只能更改存储在其中的各个值。它在标头中声明,然后在源文件中初始化。

我的发现让我尝试了以下片段;不幸的是,问题是关于一维数组或非常量数组的,与我的情况不符。

我的希望是在最后一个示例中,但是c如果它们未初始化并且我无法初始化它们,因为它们是 const,我如何使用它们的“内部”数组?

我不需要这个数组的不同类型吗?我在考虑,int d[][]但它没有恒定的宽度和高度。
在我看来,这就像一个悖论(如果它存在于 c++ 世界中),我是否遗漏了什么?

0 投票
1 回答
97 浏览

c++ - C++ const 指针奇怪的行为

奇怪的是这个输出:
* 对于查找功能:
0x9999999
0x1277777
some_string

* 对于测试代码
0x9999999
0x1277777
0000000000000000000000000000000000000000000 ....

在测试文件中,它给出了一个很长的零字符串,但地址是相同的。知道可能出了什么问题吗?

0 投票
3 回答
1395 浏览

c++ - std::string& 类型的非常量引用的无效初始化 - 如何删除

我收到一个错误:
错误:从“std::basic_string”类型的右值对“std::string& {aka std::basic_string&}”类型的非常量引用无效初始化

代码是:

如何消除此错误?早些时候我尝试了以下代码,它仍然抛出相同的错误:

0 投票
1 回答
3971 浏览

c++ - C++ 常量双指针

我想让一个常量双指针指向一个常量指针指向一个常量双精度。我开始从头开始制作它(当然我在书籍上做了一点搜索,然后我用谷歌搜索了它),并思考以下三个是什么:

我以为下一步是写一个常量双指针

然后我结合最后两个语句并写

其中 arr 是动态分配的二维数组。之后,我试图验证我所做的事情,并编写了以下语句,期望所有这些语句都会产生错误。

所以问题是我无法做出上面描述的内容,一个常量双指针指向一个常量指针,一个常量指针指向一个常量双。我怎样才能做到?

提前致谢。

0 投票
1 回答
587 浏览

c - 使用指向 FILE 类型的 const 指针是个好主意吗?

通常,C 文件 I/O 是使用FILE*标准库函数完成的。

在 C 中,也可以有一个const 指针,其中指针的地址不能改变(但它指向的值可以)。

我想知道这是否可以应用于FILE*,所以写了这个小程序来测试这个:

这编译得很好,并且使用 GCC 在 Ubuntu/Linux 16.04 上按预期工作(该文件包含我期望的字符串),但我不确定这个成语是否是一个好主意——该FILE类型在设计和处理上是不透明的是特定于实现的。

因为不能保证任何 C 库实现都不会尝试更改FILE指针的地址,所以在 C 中执行 I/O 时不使用这种方法是否更安全?

0 投票
4 回答
107 浏览

c++ - 为什么“具有 const 成员的结构”类型的指针不能指向“具有非 const 成员的结构”?

此代码无法编译:

然而,这个编译完美:

我知道在任何级别上更具 CV 限定的指针可以在任何级别指向更少 CV 限定的对象,但是为什么结构不一样呢?


上面的问题陈述是一个更复杂问题的 MCVE,我的朋友试图在t_s_t<T>和之间转换指针t_s_t<const T>,其中t_s_t是带有一个模板参数的模板结构类型typename,并且T是任意类型。