请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

猿媛之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3166|回复: 0

(C/C++)字符串比较解析

[复制链接]

554

主题

556

帖子

1938

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1938
发表于 2016-1-25 21:26:18 | 显示全部楼层 |阅读模式
        为什么 char str1[] = "abc"; char str2[] = "abc"; str1与str2不相等,
        两者不相等,是因为str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址。但有些情况却不一样,程序示例如下:
  1. #include<iostream>
  2. using namespace std;

  3. int main( )
  4. {
  5.              const char str3[] = "abc";
  6.              const char str4[] = "abc";
  7.              const char* str5 = "abc";
  8.              const char* str6 = "abc";
  9.              cout << boolalpha << ( str3==str4 ) << endl;
  10.              cout << boolalpha << ( str5==str6 ) << endl;
  11.              return 0;
  12. }
复制代码
        程序输出为
  1. false
  2. true
复制代码
        为什么上面程序示例的输出结果不都是false呢?上例中,str3和str4两个字符数组都存储在栈空间上,但两者地址值不相等。而str5和str6并非字符数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于常量区,str5和str6是指它们指向的地址的首地址,而它们自己仅是指向该区首地址的指针,所以相等(&str5和&str6是指指针自己的地址,所以两者地址是不相等的)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|猿媛之家    

GMT+8, 2020-2-28 14:40 , Processed in 0.260501 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表