收藏 分享(赏)

char指针与char数组的区别.doc

上传人:yjrm16270 文档编号:12246619 上传时间:2021-12-06 格式:DOC 页数:2 大小:24.50KB
下载 相关 举报
char指针与char数组的区别.doc_第1页
第1页 / 共2页
char指针与char数组的区别.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、转自:http:/ *p = “helloworld”;在这里 p 是一个变量,其类型为指针类型,并且指向一个字符串,字符串内容为”helloworld”, 如果要访问 p2的话,就需要先从p 中取出地址,该地址为”helloworld” 的首地址 ,然后再加上偏移量 2,就得到了l这个字符 ,所以其访问的方式 为先从 p 中取出地址,然后再将该地址加上偏移量,得到一个地址,最后从这个地址中取出值来。其分为三步:1.取 p 的值 ,该值即为 字符串的首地址;2.该地址加上偏移量,得到所要取的字符的地址;3.从这个地址中取得值。此处 p 是一个变量,它自己是存放在一个地址中的,而它的内容则是”h

2、elloworld”这个字符串的地址 . p 与字符串是分开的。同时,该指针的值是动态确定的,必须在运行的时候才能确定其值,并通过该值访问到字符串。而如果是数组的话,则为char p20 = “helloworld”;在这里 p 为一个字符串的标识,其类型是一个字符数组的类型,且该数组有 20 个 char 类型的大小.此时如果要访问 p2的话,分 2步:1.直接使用该字符数组的首地址加上 2 个 char 类型的大小的长度就得到了要访问的字符的地址;2.最后再从这个地址中取出值来.而且此时 p 的地址为该字符数组的首地址,其内容为h ,一个字符 类型。所以在这个地方数组与指针是不相同的,因为

3、此时数组取值的第一步并不是从 p 中读取地址来再加上偏移量的.此时的 p 这个地址的值就为h这个字符 ,其类型为字符型而不是一个指针类型.此时 p 的地址与 p0的地址是相同的。同时,每个符号的地址在编译时就确定了,所以这里 p 的地址就已经确定了,如果需要访问 p2,则直接使用该地址加上 2 这个偏移量就可以取到这个值了.它不需要指令再取得这个首地址.而第一种情况下,还需要指令取得指针中的值,并通过这个值来访问字符串。一个直观的看法就是前一种是两个不同的, 而后一种则是在同一个里面。另外, 还 有一个不同之处在于第一个情况下 p 指向的是一个常量区, 是不能改变的, 即不能够对 pi赋值, 而第二种情况下, p 是一个字符数组, 其是可以改变的,可以 对 pi赋值的。他们俩*p 的值是一 样的,都是 h 字符!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报