啊涂涂 发表于 2018-9-29 10:17:33

指针问题

#include <stdio.h>

int main()
{
                int num = 520;
                const int cnum = 880;
                const int *pc = &cnum;
               
                printf("cnum: %d, &cnum: %p\n", cnum, &cnum);
                printf("*pc: %d, pc: %p\n", *pc, pc);
               
                pc = &num;
                printf("num: %d, &num: %p\n", num, &num);
                printf("*pc: %d, pc: %p\n", *pc, pc);
               
                *pc = 1024;
               
                return 0;
               
}
把pc重新赋值num后,再改动num的值为什么不可以呢?

紫霞圣人 发表于 2018-9-29 10:22:34

你把const去掉就行了 const int 定义的数据相当于是常量了不可改变!
本题中*P的值永远不能变了但是指针p可以改变!
详情请参考C++Primer第5版中对const的用法说明

啊涂涂 发表于 2018-9-29 10:58:34

紫霞圣人 发表于 2018-9-29 10:22
你把const去掉就行了 const int 定义的数据相当于是常量了不可改变!
本题中*P的值永远不能变了但是指 ...

你说的参考的这个在哪里能找到?咱们论坛有吗?

紫霞圣人 发表于 2018-9-29 11:03:52

那是最新的一本C++的最经典的字典书。。学C++必看吧!!
这论坛没有,百度有
有问题先问百度,再上论坛,这样才能最快解决问题

claws0n 发表于 2018-9-29 13:03:05

const int *pc = &cnum;这里的 const 是修饰 int 的,使得指针 pc 参考的是一个不可变的量,也就是说不能透过指针去修改变量,只能参考。带你飞有讲到~

啊涂涂 发表于 2018-9-29 15:10:14

本帖最后由 啊涂涂 于 2018-9-29 15:11 编辑

claws0n 发表于 2018-9-29 13:03
const int *pc = &cnum;这里的 const 是修饰 int 的,使得指针 pc 参考的是一个不可变的量,也就是说不能 ...

const修饰int是什么意思呢?

而且为什么加上这个就不能透过指针去修改变量了?小甲鱼讲的我都听了好多遍了,但是不明白其中的原理是什么

claws0n 发表于 2018-9-29 16:27:23

啊涂涂 发表于 2018-9-29 15:10
const修饰int是什么意思呢?

而且为什么加上这个就不能透过指针去修改变量了?小甲鱼讲的我都听了好 ...

指向 int,int 是可以被修改的。const int 能不能改?虽然指针p不是参考const int,但这个修饰是让指针无法修改变量的值

rypath 发表于 2018-9-30 09:57:56

变量加const就是常变量,   常变量可以看作一个常量,12345是一个常量, 12345就是12345,不能12345=12346;
页: [1]
查看完整版本: 指针问题