//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
if("test"=="test")
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
}
上面的代碼我們測(cè)試兩個(gè)內(nèi)容為test的字符串常量是否相等,按照常理,應(yīng)該是相等的,這些在一些過程式語言中會(huì)得到相等的結(jié)論,但在c/c++卻不是這樣。
為什么呢?
答案在這里:因?yàn)樽址A看鎯?chǔ)在計(jì)算機(jī)內(nèi)存中,兩個(gè)字符串常量的地址均不相同,所以這樣的比較自然就不會(huì)得到我們所需要的結(jié)果,如果要進(jìn)行是否相等的比較應(yīng)該使用strcmp()這個(gè)涵數(shù)進(jìn)行比較!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
#include
using namespace std;
void main(void)
{
if(strcmp("test","test")==0)
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
cin.get();
}
strcmp()的函數(shù)原形是,int strcmp(const char* str1,const char* str)
相當(dāng)將會(huì)返回一個(gè)等于0的整數(shù),不相等的時(shí)候?qū)?huì)返回一個(gè)非0整數(shù)!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
#include
using namespace std;
void main(void)
{
char test[]="test str!";
char str[15];
strcpy(str,test);
cout< int a[]={1,2,3,4,5};
int b[5];
memcpy(b,a,sizeof(a)*sizeof(int));
for(int i=0;i<5;i++)
{
cout< }
cin.get();
}
上面的代碼中的strcpy用來處理字符串?dāng)?shù)學(xué)組的copy,由于字符串?dāng)?shù)組屬于const char*也就是常量指針?biāo)允遣荒苡胊="test str!";的方式賦值的,接在后面的memcpy用于處理非\0結(jié)尾的數(shù)組的copy處理,memcpy第三個(gè)參數(shù)是設(shè)置b在內(nèi)存中所需要的內(nèi)存空間大小所以用sizeof(a)*sizeof(int)來處理!
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
if("test"=="test")
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
}
上面的代碼我們測(cè)試兩個(gè)內(nèi)容為test的字符串常量是否相等,按照常理,應(yīng)該是相等的,這些在一些過程式語言中會(huì)得到相等的結(jié)論,但在c/c++卻不是這樣。
為什么呢?
答案在這里:因?yàn)樽址A看鎯?chǔ)在計(jì)算機(jī)內(nèi)存中,兩個(gè)字符串常量的地址均不相同,所以這樣的比較自然就不會(huì)得到我們所需要的結(jié)果,如果要進(jìn)行是否相等的比較應(yīng)該使用strcmp()這個(gè)涵數(shù)進(jìn)行比較!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
#include
using namespace std;
void main(void)
{
if(strcmp("test","test")==0)
{
cout<<"相等";
}
else
{
cout<<"不相等";
}
cin.get();
}
strcmp()的函數(shù)原形是,int strcmp(const char* str1,const char* str)
相當(dāng)將會(huì)返回一個(gè)等于0的整數(shù),不相等的時(shí)候?qū)?huì)返回一個(gè)非0整數(shù)!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
#include
using namespace std;
void main(void)
{
char test[]="test str!";
char str[15];
strcpy(str,test);
cout<
int b[5];
memcpy(b,a,sizeof(a)*sizeof(int));
for(int i=0;i<5;i++)
{
cout< }
cin.get();
}
上面的代碼中的strcpy用來處理字符串?dāng)?shù)學(xué)組的copy,由于字符串?dāng)?shù)組屬于const char*也就是常量指針?biāo)允遣荒苡胊="test str!";的方式賦值的,接在后面的memcpy用于處理非\0結(jié)尾的數(shù)組的copy處理,memcpy第三個(gè)參數(shù)是設(shè)置b在內(nèi)存中所需要的內(nèi)存空間大小所以用sizeof(a)*sizeof(int)來處理!

