| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 426 人关注过本帖, 1 人收藏
标题:请教高手!帮忙改成指针的!
只看楼主 加入收藏
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
请教高手!帮忙改成指针的!
#include <iostream.h>
#include <string.h>
void sort( char **p,int n)
{
    char p1[30];        //这里怎么改成指针?是不是不能改成指针
    for(int i=0;i<n-1;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(strcmp(*(p+i),*(p+j))>0)
            {
                strcpy(p1,*(p+i));
                strcpy(*(p+i),*(p+j));
                strcpy(*(p+j),p1);
            }
        }
    }
}
int main()
{
    int n;
    cout<<"你要输入多个字符串";
    cin>>n;
    char **p= new char*[n];
    for(int i=0; i<n; i++)
    {   
        *(p+i)=new char;
        cin>>*(p+i);
    }
//    for(int j=0;j<n;j++)
//    {
//        cout<<*(p+j)<<endl;
//    }
    sort(p,n);
    cout<<"排序后为:"<<endl;
    for(int k=0; k<n; k++)
    {
        cout<<*(p+k)<<endl;
    }
    return 0;
}
搜索更多相关主题的帖子: void include 字符串 
2012-06-22 02:17
jiantiewen
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:61
专家分:307
注 册:2012-6-22
收藏
得分:0 
你的main()里是要想输入多个字符还是输入多个字符串?从sort()里看有字符串操作,但在main()里看,*(p+i)=new char;虽然能得到一个char*,但是系统只分配给它一个字节,如果你用这个char* 来存放string的话,就不可能是你想要的效果。
2012-06-22 22:10
jiantiewen
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:61
专家分:307
注 册:2012-6-22
收藏
得分:14 
你应该改成p[i]=new char[128]; 首先,p是char**,它在32位系统里是一个32位指针,占4字节,所以p+1不可能是第二个char**的位置,p+2不可能是第三个char**的位置。使用数组的话,系统会跟据p的类型指向相应的单元地址。如果你要运行程序的机器是单片机,且内存较少的话,char[128]的分配量就自己看着用吧。另外提醒一下,如果你要运行程序的机器是多任务系统,特别是移动设备智能系统,使用new分配内存后,要用delete释放内存。
2012-06-22 22:39
zd1505675319
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:178
注 册:2011-11-4
收藏
得分:0 
但是我编译器没报错而且也能正常运行
2012-06-23 11:09
快速回复:请教高手!帮忙改成指针的!
数据加载中...
 
   



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

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