相关疑难解决方法(0)

在C中,可以通过指针修改const变量吗?

我在代码中写了一些类似的东西

const int x=1;
int *ptr;
ptr = &x;
*ptr = 2;
Run Code Online (Sandbox Code Playgroud)

这适用于所有编译器吗?为什么GCC编译器没有注意到我们正在改变一个常量变量?

c pointers const

4
推荐指数
1
解决办法
4143
查看次数

const&指的是非易失性变量.变量发生了变化.更改是否使const&?无效?

在C++中,可以const &改变的价值吗?

好吧,当然不能改变,可以吗?这const意味着什么.而且,听听Stroustrup:

const左值参考指的是恒定的,这是从视角的参照的用户的点不可变的.

但是这个怎么样?

#include <iostream>

int main() {
    int           a = 0;
    const int&    r = a;
    const int old_r = r;
    ++a;
    const int new_r = r;
    std::cout
      <<      "old_r == " << old_r
      << " but new_r == " << new_r << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的机器上,这输出,old_r == 0 but new_r == 1.

这是我真正的问题.在上面的代码中,查看该行

    const int new_r = r;
Run Code Online (Sandbox Code Playgroud)

只要

  • 地址&new_r既不在此行也不在代码的其他地方提取
  • 代码什么都没有volatile,

没有任何东西阻止优化编译器从合并old_r …

c++ const reference undefined-behavior const-reference

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

const int指针的行为 - C.

我有一个C程序

#include<stdio.h>

void f(const int* p)
{
  int j;
  p = &j;
  j = 10;
  printf("Inside function *p = %d\n",*p);
  *p = 5;
  printf("Inside function *p = %d\n",*p);
  j = 7;
  printf("Inside function *p = %d\n",*p);
}

int main()
{
  int i = 20, *q = &i;
  f(q);
}
Run Code Online (Sandbox Code Playgroud)

程序的编译给出了错误

分配只读位置*p

在线 *p = 5;

为什么分配j = 10;有效并且*p = 5;是错误的.

c pointers const

0
推荐指数
1
解决办法
150
查看次数