C关于字符串操作的一点小总结
来源:互联网 发布:淘宝助理怎么下载 编辑:程序博客网 时间:2024/06/05 23:48
C关于字符串操作
先看一段代码
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] ="apple";
char str2[] ="apple";
char *p1 ="apple";
char *p2 ="apple";
printf("str1:%d\nstr2:%d\n",str1,str2);
printf("p1:%d\np2:%d\n",p1,p2);
return0;
}
猜猜看,str1 和str2相等吗?P1和p2相等吗?
想好了吗?看看下面输出结果:
哈哈,跟你想的一样吗?
要是不一样了,为什么会有这样的结果啊。
那我们来分析分析!
首先
char str1[] = "apple";
char str2[] = "apple";
str1和str2都是字符串数组,
回忆一下
Str1 和str2 代表什么呢?
Str1 和 str2都是指向数组首元素首地址.也就是str1[0]和str2[0]的首地址
Str1[0]和str2[0]分别占用不同的内存单元,当然不一样啦。
再看
char *p1 = "apple";
char *p2 = "apple";
p1 和 p2 代表什么呢?
P1和p2都是指针,指向字符常量区,这里放着”apple”,因为p1和p2都指向了这个
放在常量区的字符串,都代表这个字符串的首地址,当然一样啦,还有一点要注意,
常量区的在字符串是不能修改的。
接下来要说明一点!你可曾下过类似的语句吗
if(str1 ==str2)
或者
If(p1 == p2)
这样写正确吗?
根据上面的分析,我们来看看str1 和str2比较的目的是看这两个字符数组存的
字符串相同不相同,而if(str1 == str2)这样写比较的是地址,显然不相同。所以
需要使用strcmp(str1,str2)来比较.
那么If(p1 == p2)这句话对吗?嗯,这样是对的,因为如果他们都指向同一个字符串,
地址肯定相等,否则不同。
- C关于字符串操作的一点小总结
- 关于Json的一点小总结,
- 关于优化的一点小总结
- 关于输入的一点小总结
- 关于内存管理的一点小总结
- 关于Spring JPA的一点小总结
- 【2016.3.21】关于字符串的一点总结
- C的第二篇小总结,关于文件操作
- 关于Lua中的一点小总结(主要针对的是C调用Lua)
- 关于前端js拼接字符串的一点小经验
- 本人遇到的关于namespace的一点小问题总结
- 关于JavaScript的作用域链的一点小总结
- 关于各种编码问题,汉字处理的一点小总结
- 分享关于php CI框架使用的一点小总结
- 关于UILabel自适应size的一点小总结
- c++ 关于decltype和auto的一点小总结
- 关于jdbc连接mysql的一点小总结
- 关于C/C++中指针做形参的一点小分析
- flex中实现marquee效果(由下而上滚动)
- 基于CS模式的聊天室(2)
- 著名的开源社区介绍
- PHP三层结构(下)——PHP实现AOP
- Python 多线程简单例子
- C关于字符串操作的一点小总结
- 如何学好C++语言
- PHPCMS 表单输入格式文件
- Win32ASM学习[8]: 进制转换的库函数
- xmanager 连接到rhel 6.0
- Visual C++ MFC相关书籍
- 跨平台开发工具Titanium的兴起之路:HTML5是最大威胁
- C#:abstract virual 区别 和 相同之处
- 程序员技术练级攻略