linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C常用算法程序实例-线性代数方
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·C++入门经典教程完全版01-引言
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
c/c++中字符串常量的不相等性,以及字符串的copy
[ 作者:  加入时间:2007-10-23 14:05:52  来自:Linux联盟收集整理 ]
//程序作者:管宁 RfCLinux联盟
//站点:www.cndev-lab.com
RfCLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟
RfCLinux联盟
#include <iostream> RfCLinux联盟
using namespace std; RfCLinux联盟
void main(void) RfCLinux联盟
{ RfCLinux联盟
if("test"=="test") RfCLinux联盟
{ RfCLinux联盟
cout<<"相等"; RfCLinux联盟
} RfCLinux联盟
else RfCLinux联盟
{ RfCLinux联盟
cout<<"不相等"; RfCLinux联盟
} RfCLinux联盟
} RfCLinux联盟

RfCLinux联盟
RfCLinux联盟
上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。 RfCLinux联盟
RfCLinux联盟
为什么呢? RfCLinux联盟
RfCLinux联盟
答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较!

RfCLinux联盟
//程序作者:管宁 RfCLinux联盟
//站点:www.cndev-lab.com RfCLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟
RfCLinux联盟
#include <iostream> RfCLinux联盟
#include <string> RfCLinux联盟
using namespace std; RfCLinux联盟
void main(void) RfCLinux联盟
{ RfCLinux联盟
if(strcmp("test","test")==0) RfCLinux联盟
{ RfCLinux联盟
cout<<"相等"; RfCLinux联盟
} RfCLinux联盟
else RfCLinux联盟
{ RfCLinux联盟
cout<<"不相等"; RfCLinux联盟
} RfCLinux联盟
cin.get(); RfCLinux联盟
} RfCLinux联盟

RfCLinux联盟
strcmp()的函数原形是,int strcmp(const char* str1,const char* str) RfCLinux联盟
RfCLinux联盟
相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数!

RfCLinux联盟
//程序作者:管宁 RfCLinux联盟
//站点:www.cndev-lab.com RfCLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 RfCLinux联盟
RfCLinux联盟
#include <iostream> RfCLinux联盟
#include <string> RfCLinux联盟
using namespace std; RfCLinux联盟
void main(void) RfCLinux联盟
{ RfCLinux联盟
char test[]="test str!"; RfCLinux联盟
char str[15]; RfCLinux联盟
strcpy(str,test); RfCLinux联盟
cout<<str<<endl; RfCLinux联盟
RfCLinux联盟
int a[]={1,2,3,4,5}; RfCLinux联盟
int b[5]; RfCLinux联盟
memcpy(b,a,sizeof(a)*sizeof(int)); RfCLinux联盟
for(int i=0;i<5;i++) RfCLinux联盟
{ RfCLinux联盟
cout<<b[i]<<","; RfCLinux联盟
} RfCLinux联盟
cin.get(); RfCLinux联盟
} RfCLinux联盟
RfCLinux联盟
RfCLinux联盟
上面的代码中的strcpy用来处理字符串数学组的copy,由于字符串数组属于const char*也就是常量指针所以是不能用a="test str!";的方式赋值的,接在后面的memcpy用于处理非\0结尾的数组的copy处理,memcpy第三个参数是设置b在内存中所需要的内存空间大小所以用sizeof(a)*sizeof(int)来处理! Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息