yanapupa
yanapupa
采纳率60%
2016-05-05 15:00 阅读 1.1k

参数*p传递,对p进行++会影响源程序吗

#include "stdafx.h"
#include

void fun(char *p)
{
//printf("%c",p);
while(*p!='E')
{
printf("%c\n",p);
p++;
}

}
int main(int argc, char* argv[])
{
char p[5]={'A','B','C','D','E'};
fun(p);
printf("%c",p);

return 0;

}

为什么这个输出是
@
A
B
C
@
'@'从哪里来的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • balary 击楫流中 2016-05-05 15:28

    printf("%c",p); 这个错了。

    应该是 printf("%c", *p );

    你对 char 和 char * 的理解不对,再学习一下指针

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-05-05 15:30
     你的程序没法编译,修改下
    
    #include<stdio.h> //这个头文件
    
    void fun(char *p)
    {
        //printf("%c",p);
        while(*p!='E')
        {
            printf("%c\n",*p); //修改
            p++;
        }
    
    }
    int main(int argc, char* argv[])
    {
        char p[5]={'A','B','C','D','E'};
        fun(p);
        printf("%c",*p); //修改
    
    
        return 0;
    }
    结果正确
    
    点赞 1 评论 复制链接分享
  • q610098308 恋恋西风 2016-05-05 15:23

    @ 是非法的,已经出了你的可用内存了;指针已经非法了。什么都可能是;每次出的结果可能不一样。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-05-05 15:25

    @是A的ascii码-1(64)

    点赞 评论 复制链接分享

相关推荐