在一字符串中找一个字符的位置问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 20:34:44
这个程序中,为什么“ptr-x+1”这个ptr地址减去首地址x就是这个字符的下标值?而直接显示ptr是china字符串?
#include<iostream.h>
char *s(char *str,char ch)
{
while(*str)
if(*str++==ch)return str-1;
return 0;
}

void main()
{
char *s(char *,char);
char *ptr,*x="i love china";
ptr=s(x,'c');
if(ptr)
cout<<"the 'c' is at position:"<<ptr-x+1<<endl;
else
cout<<"the 'c' was not found\n";
}

因为ptr指针指向的是x字符串的首地址的某个偏移量为x+y(y为偏移量,当然是int型的了),而x又为x字符串的首地址,
所以ptr-x+1=x+y-x+1=y+1;y是int型,即ptr-x+1为int型当然就是下标值了。
而ptr声明的是char型的指针,所以指向的是地址,输出的就是字符串了。