| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 995 人关注过本帖
标题:这个程序为什么不输出?
只看楼主 加入收藏
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
 问题点数:0 回复次数:8 
这个程序为什么不输出?
只能重问一遍了
#include<iostream>
#include<cstring>
using namespace std;
char* stringcopy(char*);

int main()
{
  char* pi="abcdefg";
  char* ptr=stringcopy(pi);
  delete [] ptr;
  return 0;  
}

char* stringcopy(char* i)
{
  char* pstr=new char[strlen(i)+1];
  while(*i!='\0')
  {
    *pstr++=*i++;            
  }
  *pstr='\0';
  cout<<pstr<<endl;
  return pstr;      
}

[[it] 本帖最后由 newyj 于 2008-10-23 22:08 编辑 [/it]]
搜索更多相关主题的帖子: 输出 
2008-10-23 21:35
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
函数调用时:
*pstr++=*i++;
此句导致指针i指向了字符串“abcdefg”的末尾,所以:
cout<<i<<endl;
此句无法执行
2008-10-23 21:55
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
不好意思  上边 哪个写 错了
现在 改过来了
这 为什么呢 还是不能输出
2008-10-23 22:09
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
cout<<pstr<<endl;
这句也不能输出,因为此时pstr也指向字符串的末尾,
char* stringcopy(char* i)函数应修改如下:

char* stringcopy(char* i)
{
  char* pstr=new char[strlen(i)+1];
  char*p=pstr;
  while(*i)
  {
    *p++=*i++;            
  }
  *p='\0';
  cout<<pstr<<endl;
  return pstr;      
}
2008-10-23 22:30
lmyouya
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-10-17
收藏
得分:0 
哪里回过这样的贴!
我在那张贴回过啦,改好了代码贴在那贴呢。。。

吖吖走了
2008-10-23 22:35
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
可不可以不用中间变量指针 char*p
用pstr 最后 再 减去strlen(i)+1 把指针移到数组起始地址 这样为什么不行
例如:
char* stringcopy(char* i)
{
  char* pstr=new char[strlen(i)+1];
  while(*i!='\0')
  {
    *pstr++=*i++;            
  }
  *pstr='\0';
  pstr-=(strlen(i)+1);
  cout<<pstr<<endl;
  return pstr;      
}
2008-10-24 11:18
deathknight
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-10-22
收藏
得分:0 
回复 6# newyj 的帖子
#include<iostream>
#include<cstring>
using namespace std;
char* stringcopy(char*);

int main()
{
  char* pi="abcdefg";
  char* ptr=stringcopy(pi);
  delete [] ptr;
  return 0;  
}

char* stringcopy(char* i)
{
  char* pstr=new char[strlen(i)+1];
  char *head=pstr;
  while(*i!='\0')
  {
    *pstr++=*i++;            
  }
  *pstr='\0';
  cout<<head<<endl;
  return head;      
}
这不就好了嘛  用另外一个指针去记录一开始的指针
2008-10-24 13:04
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
回复 7# deathknight 的帖子
我是想问 不用另一个指针
pstr-=(strlen(i)+1); 只用 这一个指针来输出 把这个指针 减去strlen(i)+1让它指向数组头指针
2008-10-24 13:44
youhm
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2006-5-25
收藏
得分:0 
总要用一个变量来记录吧,因i和pstr都改变了,最后再用strlen(i)+1可函数开始时结果根本就不一样了
2008-10-24 14:55
快速回复:这个程序为什么不输出?
数据加载中...
 
   



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

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