字符指针和字符数组的区别有什么? 以下面的C++代码段为例: 二者的区别主要集中在以下几点。 一、存储空间不同。 1、charPtr是一个字符指针,即,是一个“指向字符的指针”。详细地说,它是一个const char*型的指针,它应该指向一个char型字符。而现在,它被初始化之后所指向的就是字符串字面量”How do you do?”所含有的首字符’H’,即,它自身存储空间里面存储的是这个首字符’H’的地址值。因此,它自身存储空间的大小与一个char*型指针所占大小一定相等。 2、charArray是一个字符数组,即,是一个“由字符型素所构成的数组”。详细地说,它是一个char[15]型的数组,即,是一个“由15个char型字符所构成的数组”。而现在,它被初始化之后的存储空间里面存储着的15个字符(包括结束字符’\0’在内)都是从字符串字面量”How do you do?”复制得到的。因此,它的存储空间大小与一个char[15]型的数组所占大小一定相等。 二、使用方式不同 1、charPtr是一个const char*型的指针。在它的类型之中,const修饰的是char而不是char*,这意味着:你只能利用它 对 “它所指向的字符”执行读操作。例如: (PS:如果你希望用const来修饰char*,则你将得到一个char* const型的指针,这种指针自身是一个const量,即,这种指针只能指向“其被初始化时所指向的那个字符”,以后不能改变这种指针的指向。因此,这种指针的适用场合比较少见,这里不举例了。) 让我们把思路回到前述指针charPtr身上。 正因为在指针charPtr的类型之中,const修饰的不是char*,因此指针charPtr自身不是const量,这意味着可以改变charPtr的指向,让它一会儿指向这个字符、一会儿又指向另一个字符。例如: 现在charPtr指向了字符串字面量”How do you do?”含有的紧挨着’H’右边的那个’o’。 2、在很多(并非所有)场合下,数组名会等价于其首素地址值。charArray是一个char[15]型的数组,在很多(并非所有)场合下,charArray等价于&charArray[0]。例如: 但是,必须注意:&charArray[0]是一个地址值,这属于常量。因此: 然而,charArray数组的每个素都是char型(而不是const char型)字符,因而可以对这些素执行写操作。例如: 未完待续,有空再续…………
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/33292.html