关于指针和常数的疑问
为什么报错?想验证Kotori前辈的笔记,结果出错了
"2)在编程中要注意左值要比右值更严格,至少在同一级别。下方代码中左值*p没有被限制,因此可以通过p去修改b的值,这样把b定义为常量的意义,也会产生安全问题。const int b = 1;int *p = &b;*p = 2;" 1,常量不能更改。
2,指针指向的常量,不能通过指针更改。
3,指针指向一个常量;指针本身里面存放的地址可以更改。 ba21 发表于 2017-8-5 11:21
1,常量不能更改。
2,指针指向的常量,不能通过指针更改。
3,指针指向一个常量;指针本身里面存放的地 ...
请看第二张图。。 慢慢琢磨
const int price = 520;
const int *pc = &cnum; //pc存放的地址可变
指向常量的指针:
-可以修改为指向不同的常量
-可以修改为指向不同的变量
-可以通过解引用来读到指针指向的数据
-不可以通过解引用修改指针指向的数据
=======================================================
常量指针:(指向非常量的常量指针) int * const p = #
-指针自身不可以被修改
-指针指向的值可以被修改
常量指针:(指向常量的常量指针) const int * const p = &cnum;
-指针自身不可以被修改
-指针指向的值也不可以被修改
=========================================================
指向常量的常量指针:
const int cnum = 520;
const int * const p = &cnum;
const int * const *pp = &p;
ba21 发表于 2017-8-5 12:41
慢慢琢磨
const int price = 520;
你没懂我意思:
我是这样写的“*p”
xjy99 发表于 2017-8-5 13:01
你没懂我意思:
我是这样写的“*p”
我认为你没有仔细学习。还有没有认真看我给你和答复。
{:10_278:} ba21 发表于 2017-8-5 13:03
我认为你没有仔细学习。还有没有认真看我给你和答复。
{:10_245:}听前辈一席话,胜吃十年的盐啊。。。真真加深了我对指针的理解。不过我疑惑的是,理论上,p指针未被const修饰,p的指向可以修改,我现在却连传址都无法传,这不科学 xjy99 发表于 2017-8-5 14:03
听前辈一席话,胜吃十年的盐啊。。。真真加深了我对指针的理解。不过我疑惑的是,理论上,p指 ...
那是你的理论。不是C的理论。{:10_264:} 本帖最后由 xjy99 于 2017-8-6 07:47 编辑
ba21 发表于 2017-8-5 14:40
那是你的理论。不是C的理论。
感谢,已解决,上机,连了下vc6。。。基本上一样的代码。。。应该是c4droid非要我const int *p=&b
xjy99 发表于 2017-8-6 07:05
感谢,已解决,上机,连了下vc6。。。基本上一样的代码。。。应该是c4droid非要我const int *p=&b
C:\Users\Administrator\Desktop\Ctest\1.c(6) : warning C4090: 'initializing' : different 'const' qualifiers
编译器是换了,程序也能执行了。不过还不是有warning 。但是为了什么要这么做呢?如果开发出一个程序,这台电脑能用,下次换台电脑,或移植到别的系统上就一大把问题;何必要这样,也证明不了什么{:10_272:} ba21 发表于 2017-8-6 09:43
C:%users\Administrator\Desktop\Ctest\1.c(6) : warning C4090: 'initializing' : different 'const' qu ...
{:10_266:}
c4droid直接给我fatal error
vc6无warning
前辈用的是?
本帖最后由 xjy99 于 2017-8-6 10:24 编辑
ba21 发表于 2017-8-6 09:43
C:%users\Administrator\Desktop\Ctest\1.c(6) : warning C4090: 'initializing' : different 'const' qu ...
我xp,在安装mingw时出了点问题,i.e.,我不知道我的gvim怎么连接gcc,求前辈帮忙
页:
[1]