C语言中,该怎样区分指针常量和指针变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,该怎样区分指针常量和指针变量?相关的知识,希望对你有一定的参考价值。
如有:
char s1[100]="ABC";
char *s2="DEF";
这样以后,书上说s1就是指针变量,s2就是指针常量,可以做strcpy(s1,s2),但不能做strcpy(s2,s1)。为什么啊?
不是说所有的数组名都是指针常量吗?那s1不就是个字符数组名吗,怎么会是变量呢?
还有,定义char * s2以后,我觉得s2应该是指针变量啊,怎么会说他是指针常量呢?
到底应该怎么区分指针常量和指针变量啊,能具体解释一下吗?万分感谢啊!!
s2是指针变量,char *s2="DEF" 代表这个指针变量指向这个字符串,也就是s2就代表了它的首地址。可以改变指针变量的指向。
C ++中const指针类型区分技巧
常量(Constant)
C++中的const变量必须在定义的时候赋初值。const 指针也需要赋初值。
const结合指针*有一下三种常见类型:
1、const int* a; a是一个指向长整数的指针,整型数不可修改,但指针可以修改。所指向的值是常量。
2、int* const a; a是一个指向整型数的常指针,指向的数可以i修改,但指针不可以修改。地址值是常量的指针。
3、const int *const a; a是一个指向常整型数的常指针,指针与其所指向的数都不可修改。
分类技巧:已×为基准(界),×左边和×右边两部分。×右边表示变量本身是什么类型,×左边表示指针指向的东西是什么类型。
比如例1这样解释:(这个指针指向的是一个const int 的变量,所以a不可以修改,但是指针可以修改)。
以上是关于C语言中,该怎样区分指针常量和指针变量?的主要内容,如果未能解决你的问题,请参考以下文章
C 语言const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )