字符数组,字符指针
2015-10-29 10:39
387 查看
const char str1[]="abc"; const char str2[]="abc"; const char *p1="abc"; const char *p2="abc";
问:
(1)str1和str2的地址是否相同?
(2)p1和p2的地址是否相同?
写个程序简单地测试一下:
#include<stdio.h>程序运行结果:
void main()
{
const char str1[]="abc"; const char str2[]="abc"; const char *p1="abc"; const char *p2="abc";
if(str1==str2)
printf("str1==str2\n");
else
printf("str1!=str2\n");
if(p1==p2)
printf("p1==p2\n");
else
printf("p1!=p2\n");
}
str1!=str2 p1==p2
简要的解释如下(具体参考:/article/9899230.html):
字符数组str1、str2与字符指针p1、p2的区别是:str1、str2是数组,可以改变数组中保存的内容;p1、p2是指针,可以指向不同的字符串,但是不能改变所指的字符串常量。
也就是,定义一个字符数组,就相应地在内存中为数组分配空间,每个字符数组得到各自的内存空间,因此字符数组的地址是不相同的;而字符指针是指向公用的常量区的字符,如果字符串相同,那么指针所指向的内存地址也是相同的。
对于const的理解,这道题目体现的不是很明显。以后有机会补上!
相关文章推荐
- Hexagon SDK架构分析
- apache kafka系列之在zookeeper中存储结构
- chrome调试ajax
- 最受 Web 开发者欢迎的 NoSQL 和关系数据库
- 《实时控制软件设计》第一个编程作业
- XSS跨站测试代码大全
- python列表
- 学会自我管理
- 现代操作系统——安全
- [Windows]安全机制学习笔记
- C++11:lambda表达式
- IOS 003 启动画面设置,以及增加启动画面动画
- optparse 模块—— 命令行选项的解析器
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- tornado.gen.coroutine-协程
- 给图像添加相框、圆形圆角显示图片、图像合成知识
- Jquery 将表单序列化为Json对象
- php 代码重用
- python字符串
- 真实速度