指针判断回文数问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 05:01:23
/*本题是用指针检查是否为回文数*/
#include <stdio.h>
void main()
{
char name[5]={'M','A','D','A','M'};
int flag=1;
/* flag表示字符串是否为回文串,1表示回文,0表示不回文*/
char *start,*end;
/*指向数组的第一个元素*/
start=name;
/*指向数组的最后一个元素*/
end=name+4;
for(;start<=end;start++,end--)
{
if(*start!=*end)
{
flag=0;
break;
}
}
if(flag==1)
printf("\n是回文数");
else
printf("\n不是回文数");
}
本题是正确的,但是我有一点迷惑,就是第一个M与第5个M,是同样的字符,那么他们的地址就一样吗?

当然不一样了,两个变量当然存放在不同的地址.
这5个字符放在内存中连续的地址,所以才有本程序.
头指针不断的往后移动,判断其相对应的位置的字符是否一样,不一样就不是回文了

正确