一道易错的题

来源:互联网 发布:java 网络编程笔试题 编辑:程序博客网 时间:2024/06/05 16:44

int _tmain(int argc, _TCHAR* argv[])
{
char p[] = "String";
char *p1 = "String";
char *p2 = "String";
string str= "String";
int x= 0;
if (p == "String")
{
printf("Pass 1");
if (p[sizeof(p)-2] == 'g')
{
printf("Pass 2");
}
else
{
printf("Fail 2");
}
}
else
{
printf("Fail 1");
if (p[sizeof(p)-2] == 'g')
{
printf("Pass 2");
}
else
printf("Fail 2");
}


getchar();
return 0;

}

输出结果是:Fail 1Pass2

首先,p == “String"是不成立的,因为p是一个指针,也就是一个地址,p的值(地址)装的值才是”String“(还是有点懵)

说是,这样比较的是首地址,不是比较它指向的值,要改成strcmp才行!

然后,sizeof(p) = 7,包括了后面的”\0“,如果是strlen(p) 就是6了

0 0
原创粉丝点击