| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1174 人关注过本帖
标题:有个指针和数组的点老是弄不懂,求教
只看楼主 加入收藏
学C中爱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-4-14
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
有个指针和数组的点老是弄不懂,求教
各位大神,有个点我老是看不懂,求教一下,谢谢。

#include<stdio.h>
int func(char *s)
{
    char *p = s;
    while(*p)
    p++;
    p--;
    while(*p == *s && p>s)
    p--,s++;
    return p<=s;
}
int main()
{
    char s[100];
    scanf("%s",s);
    if(func(s))
    printf("%s是回文\n",s);
    else
    printf("%s不是回文\n",s);
}

代码里的*p不是已经是指向数组s的指针了吗,为什么还可以写*p= =*s和p>s,不应该是*p= =s,*p>s吗?
求大神详细跟我讲解一下指针&数组这个关系可以吗,这一节我看书老是模模糊糊的,代码也打的很奇怪,谢谢了。

[此贴子已经被作者于2018-4-21 22:05编辑过]

搜索更多相关主题的帖子: 指针 数组 char while printf 
2018-04-21 22:04
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
收藏
得分:10 
没毛病啊,s是数组s的首地址,p是地址,*p=*s表示将数组s内容赋值在地址p内。p,s都是地址,地址之间可以进行-,<,>运算。

printf("萌新一枚,请多指教");
2018-04-21 22:45
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
收藏
得分:10 
因为是scanf("%s",s); 所以s的结尾是'\0'
while(*p)
    p++;
这个循环将p指向数组的末尾'\0'
p--;再向前一位指向最后一个非空字符
 这时while(*p == *s && p>s)的意思是当s[strlen(s)-1]==s[0]&&strlen(s)>0进入循环
 p--,s++;(应该是要花括号括起来)再判断s[strlen(s)-2]==s[1]&&strlen(s)-1>1继续循环
2018-04-22 07:06
快速回复:有个指针和数组的点老是弄不懂,求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021907 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved