VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 244|回复: 4

const修饰指针

[复制链接]
88_avatar_middle
最佳答案
0 
在线会员 发表于 2021-4-12 16:29:13 | 显示全部楼层 |阅读模式
我在网上找的C语言课程,发现了一个问题。
代码在.cpp的源文件中是报错的。
但是在.c源文件中,是可以运行的。
我问很多人,C与C++在对待const修饰是一致的。
但是我的编译器能通过这个代码。
不知道是什么问题。
求解。。

代码如下:
#include<stdio.h>

int main()
{
        const int a = 10;
        const int* const b = &a;
        printf("a的地址为%p,b的地址为%p。\n", &a,&b);
        printf("a的值为%d,b的值为%d。\n", a, *b);
        int** c = &b;
        printf("c的地址为%p\n", c);
        **c = 100;
        printf("a的值为%d\n", a);
        return 0;
}

constC中.png
。cpp中.png




上一篇:CString和string的转换的原理
下一篇:不允许使用不完整的类型问题
31_avatar_middle
最佳答案
14 
在线会员 发表于 2021-4-12 19:27:56 | 显示全部楼层
const int* const b = &a; 谁教你这么写的?
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         const int a = 10;
  5.         const int* b = &a;
  6.         printf("a 的地址为%x, b 指向的地址为%x\n", &a, *&b);
  7.         printf("a 的值为%d, b 的值为%d\n", a, *b);
  8.         int** c = (int**)&b;
  9.         printf("c 指向的地址为%x\n", **&c);
  10.         **c = 100;
  11.         printf("a 的值为%d\n", a);
  12.         return 0;
  13. }
复制代码

点评

学校老师教的。  发表于 2021-4-12 19:36
88_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-4-12 22:38:15 | 显示全部楼层
cpp2019 发表于 2021-4-12 19:27
const int* const b = &a; 谁教你这么写的?

我在网上找的教程,我看视频下面的时间是2018年。黑马程序员的C语言入门。
但是我在C++中却不能那么写。请问一下是我编译器的问题还是别的问题。
vs2019.
06_avatar_middle
最佳答案
0 
在线会员 发表于 2021-4-16 16:09:24 | 显示全部楼层
我觉的是这行
int** c = &b;  这里实际是根据b 创建一个临时值,然后用c指向这个临时值 后面所操作的都是对这个临时值,而不是const b,所以可以编译通过
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-5-9 03:29

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表