| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖
标题:指针,数组尾加一就指向空值???
只看楼主 加入收藏
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
指针,数组尾加一就指向空值???
#include<stdio.h>
void main()
{
    char a[]="I am a boy.",b[20],*p1,*p2;
    p1=a;
    p2=b;
    while(*p1!='\0')
    {        
        *p2=*p1;
        p1++;
        p2++;
    }
    *p2='\0';
    printf("string a is:%s\n",a);
    printf("string b is:");
    printf("%s\n",b);
    printf("%s\n",p1);//这里输出是空的
    printf("%s\n",p2);//这里输出也是空的
}
为什么这两处地方不能正常的输出,该怎么解决呢?
2016-06-07 13:27
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:20 
程序代码:
#include<stdio.h>
void main()
{
    char a[]="I am a boy.",b[20],*p1,*p2;
    p1=a;
    p2=b;
    while(*p1!='\0')
    {        
        *p2=*p1;
        p1++;           //p1在这里已经改变了,已经不指向a[]了,
        p2++;           //同理,p2在这里也改变了,也不指向b了。
    }            //执行完这个while循环后,p1,p2都改变了,都指向了后面的位置。后面的位置在不同的环境下是不同的,有可能是空值,也可能是别的值。
    *p2='\0';    //在这一句后面你再重定向p1.p2试试。
    printf("string a is:%s\n",a);
    printf("string b is:");
    printf("%s\n",b);
    printf("%s\n",p1);//这里输出是空的
    printf("%s\n",p2);//这里输出也是空的
}



代码测试环境:  WinXP+C-Free5.0.
2016-06-07 13:39
灰小机
Rank: 2
来 自:月亮
等 级:论坛游民
威 望:1
帖 子:28
专家分:42
注 册:2016-6-5
收藏
得分:0 
#include<stdio.h>
void main()
{
    char a[]="I am a boy.",b[20],*p1,*p2;
    p1=a;
    p2=b;
    while(*p1!='\0')
    {
        *p2=*p1;
        p1++;
        p2++;
    }
    *p2='\0';
    p1=a;
    p2=b;
    printf("%s\n",p1);
    printf("%s\n",p2);
}
已经解决了,谢谢
2016-06-07 16:13
快速回复:指针,数组尾加一就指向空值???
数据加载中...
 
   



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

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