int palindrome(char * str){
char * pt1 = str;
char * pt2 = str;
if(pt1==NULL){
std::cout<<"\n invalid string";
return -1;
}
while(*pt2 != '\0')
pt2++;
pt2--;
while(pt1 < pt2){ // why does this work correctly ?
if(*pt1 != *pt2){
std::cout<<"\n not palindrome";
return 0;
}
else{
pt1++;
pt2--;
}
}
std::cout<<"\n yes palindrome";
return 1;
}
你好
这是检查传递的char *是否指向回文的函数。
这里有两个指针
pt1-从开始移动fwds开始
pt2-从结尾开始向后移动
现在我不希望他们在中间相遇后继续。
所以我检查是否总是pt1
为什么?我没有比较* pt1与* pt2。
它比较什么值?
最佳答案
这是导致正确执行此代码块的三个概念:
由于指针实际上只是整数(例如0x000001、0x000002等),因此可以在它们上使用比较运算符。
最后,由于该字符串的内存将是连续的且不断增加的事实,因此您可以创建一个抽象级别:内存中更远的指针的计算结果将大于内存中较早的地址。
关于c++ - 指针如何比较?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14450523/