⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12.1.1 const char.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 TXT
字号:
12.1.1 const char* 
const char*类型是指向常量的指针,注意此时 const所在的位置:在"*"的前面。 const在 char的
前面或后面都是一样的,但通常将 const放置在 char的前面。对一个利用 const char*类型定义的
常量指针来说,不能修改其指向的内存中的内容,但可以修改其所指向的内存地址。 const char*
类型的使用方法如下所示 : 
char ch[5]="lisi"; 
const char* pStr=ch; 

上述所示的第一行代码定义了一个字符数组: ch.并赋值为字符串: lisi 0注意这种赋值形式只能在
定义的同时进行。另一点需要读者引起注意的是,这里定义的字符数组元数个数为 5.而不是 4!因
为 C语言中,对于常量字符串来说,它的最后都需要放置一个"\。"字符表示字符数组的结束,因此
这里的字符数组元素个数应该为 5 .
接下来,上述代码的第二行代码利用 const char*类型定义了一个指向常量的指针变量: pStr,然
后用己定义的字符数组 ch给这个变量赋值,相当于将这个数组的首地址赋给了这个变量。因为对于
利用 const char*类型定义的指向常量的指针变量,不能修改其指向的内存中的内容,但可以修改
其本身的值,即变量所保存的内存地址。因此,对于 pStr来说,这个指针变量的值是可以修改的,
而其指向的对象 (即数组中的元素〉被看做是常量,不能够被修改。
假定 ch这个字符数组在内存中存放的首地址是: 0088:4400,那么该字符数组的内存 
模型,以及执行上述两行代码之后,各变量的内容如图 
12.1所示。 
图 12.1 const char*类型变量内存模型示例
这时,如果对pstr变量进行如下操作。 
*pStr=' w' ; //error 
. 
pStr="wangwu"; //ok 
上述代码的第一行是错误的,因为它试图修改pStr所指向的内存中的数据。 pStr被声明为指向常量
的指针类型,表明它所指向的内存中的数据是常量,不能被修改,这句代码在编译时编译器就会提
示出错。而第二行代码是把一个常量字符串赋给pStr.相当于把这个常量字符串的首地址赋给这个指
针变量,因为常量指针的值是可以修改的,所以这个操作是允许的。
注意:虽然我们不能利用pStr修改它所指向元素的值,但是我们 
可以通过数组变量.ch来修改元素的值。 
由此可见,一旦把岗位声明为指向常量的指针类型 (const char*类型).在编译时就保证了不能利用
pStr修改其所指向的内容。因此,在编程过程中,在定义函数时,如果想利用指针类型来传递参数,
通常将形参声明为const char*类型,这样就不能利用形参来修改该指针所指向的内容,从而保证了
数据的一致性。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -