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应该是指针变量啊,怎么会说他是指针常量呢?

到底应该怎么区分指针常量和指针变量啊,能具体解释一下吗?万分感谢啊!!

参考技术A 你错了 ,s1是指针常量,s2是指针变量,因为s1代表一个数组名,而数组名就代表这个数组的首地址,它是不能改变的,即不能这样 : s1=s1+1;

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语言中怎样区分一维指针和二维指针?

C语言中“指针”和“指针变量”的区别是啥??

c语言常量指针赋值给变量指针导致警告

C语言指针总结

指针与 const --- 指针常量与常量指针

C 语言const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )