相关疑难解决方法(0)

const int*,const int*const和int const*之间有什么区别?

我总是搞砸了怎么用const int*,const int * constint const *正确的.是否有一套规则来定义您能做什么和不能做什么?

我想知道在任务,传递到职能等方面所做的所有事情和所有不应做的事情.

c c++ int pointers const

1262
推荐指数
15
解决办法
47万
查看次数


C不是那么难:void(*(*f [])())()

我今天刚看了一张照片,觉得我很感激解释.所以这是图片:

一些c代码

我发现这令人困惑,并想知道这些代码是否实用.我用Google搜索了这张照片,并在 reddit条目中找到了另一张照片,是照片:

一些有趣的解释

那么"螺旋式阅读"是有效的吗?这是C编译器解析的方式吗?
如果对这个奇怪的代码有更简单的解释,那就太好了.
除此之外,这些代码是否有用?如果是这样,何时何地?

一个关于"螺旋规则"的问题,但我不只是询问它是如何应用的,或者是如何用该规则读取表达式的.我也质疑这种表达方式的使用和螺旋规则的有效性.关于这些,已经发布了一些很好的答案.

c parsing pointers function-pointers void-pointers

184
推荐指数
10
解决办法
1万
查看次数

常量指针与常量值上的指针

以下声明之间有什么区别?

char * const a;
const char * a;
Run Code Online (Sandbox Code Playgroud)

为了理解我写这个小程序的区别:

#include <stdio.h>
#include <stdlib.h>


int main (int argc, char **argv)
{
    char a = 'x';
    char b = 'y';

    char * const pc1 = &a;
    const char * pc2 = &a;

    printf ("Before\n");
    printf ("pc1=%p\n", pc1);
    printf ("*pc1=%c\n", *pc1);
    printf ("pc2=%p\n", pc2);
    printf ("*pc2=%c\n", *pc2);

    *pc1 = b;
/*     pc1 = &b; */

/*     *pc2 = b; */
    pc2 = &b;

    printf ("\n\n");

    printf ("After\n");
    printf ("pc1=%p\n", pc1);
    printf ("*pc1=%c\n", …
Run Code Online (Sandbox Code Playgroud)

c pointers const

142
推荐指数
8
解决办法
16万
查看次数

在变量名之前和":"之后放置"mut"有什么区别?

这是我在Rust文档中看到的两个函数签名:

fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }
Run Code Online (Sandbox Code Playgroud)

为什么不同的位置mut

似乎第一个函数也可以声明为

fn modify_foo(foo: mut Box<i32>) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

variables syntax reference mutable rust

51
推荐指数
3
解决办法
5734
查看次数

std::unique_ptr 中运算符 * 的常量正确性

为什么 std::unique_ptr 的 'operator*' 成员函数可以标记为 const ( https://en.cppreference.com/w/cpp/memory/unique_ptr/operator *) 而像 'front()'、 'back( std::vector 中的 )'、'operator[]' 等未标记为 const?两者都返回对其管理的资源的非常量引用。

核心问题是我无法理解第一部分,即为什么我们能够将“operator*”标记为 const,即当该函数中的“*this”指针是 const 时,返回类型如何为“T&”指针(由于函数被标记为 const)?

c++ const-correctness unique-ptr

7
推荐指数
1
解决办法
394
查看次数

为什么这不会生成警告或错误

我有一个需要指针的函数,但我不小心将它声明为 const。该函数(故意)更改指针值 - 实际指针而不是指针指向的数据。

我想知道为什么这不会产生警告......

static void CalcCRC(const uint32_t *pData, uint8_t noWords)
{
    
    // Do some other stuff....

    pData = pData + noWords;

    // Do some other stuff....

}
Run Code Online (Sandbox Code Playgroud)

c pointers constants

4
推荐指数
2
解决办法
123
查看次数