是小狐狸啊
2016-05-02 11:49
采纳率: 63.6%
浏览 2.0k
已采纳

C++ 用指向指针的指针的方法对5个字符串排序并输出时遇到的问题

//用指向指针的指针的方法对5个字符串排序并输出
void sort(char **p)
{
char* temp=new char;//为什么没有长度呢?这么可以没有长度呢??
for(int j=0;j<5;j++)
{
for(int k=j;k<5;k++)
{

if(strcmp(p[j],p[k])>0)
{
temp=p[j];
p[j]=p[k];
p[k]=temp;
}
}
}
}
int main()
{
char** p=new char*;//问题同上
for(int i=0;i {
p[i]=new char;//问题同上
cin>>p[i];
}
sort(p);
for(int i=0;i<5;i++)
{
cout<<p[i]<<" ";
}
return 0;
}

ps:是不是用指向指针的指针的方法做使问题简化了,更易操作了?为什么我看的有点晕···

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • asd001110 2016-05-02 15:29
    已采纳

    sort里面的不带长度是因为形参p是二级指针,输入性质,即内存在主函数已经分配。那么P[i]就是char*了。
    在sort里面交换的不是内存块,而是指针的指向,所以只要给temp分配一个char字节就足够啦。

    再说主函数里面的char**p,他也是一个指针,只不过指向的是一个指针而已,它初始指向一个char*,P[I]就是一级指针,它的内存分配如上面所述

    总之一句话,指针的指向就是一个地址,你可以给他分配一串连续的地址,也可以是一串分散的地址,这里就是将数据分散存储了。

    你完全可以自己重新写成分配一串连续的地址。

    纯属个人见解

    点赞 评论
  • asd001110 2016-05-02 15:30

    sort里面的不带长度是因为形参p是二级指针,输入性质,即内存在主函数已经分配。那么P[i]就是char*了。
    在sort里面交换的不是内存块,而是指针的指向,所以只要给temp分配一个char字节就足够啦。

    再说主函数里面的char**p,他也是一个指针,只不过指向的是一个指针而已,它初始指向一个char*,P[I]就是一级指针,它的内存分配如上面所述

    总之一句话,指针的指向就是一个地址,你可以给他分配一串连续的地址,也可以是一串分散的地址,这里就是将数据分散存储了。

    你完全可以自己重新写成分配一串连续的地址。

    纯属个人见解

    点赞 评论
  • asd001110 2016-05-02 15:31

    sort里面的不带长度是因为形参p是二级指针,输入性质,即内存在主函数已经分配。那么P[i]就是char*了。
    在sort里面交换的不是内存块,而是指针的指向,所以只要给temp分配一个char字节就足够啦。

    再说主函数里面的char**p,他也是一个指针,只不过指向的是一个指针而已,它初始指向一个char*,P[I]就是一级指针,它的内存分配如上面所述

    总之一句话,指针的指向就是一个地址,你可以给他分配一串连续的地址,也可以是一串分散的地址,这里就是将数据分散存储了。

    你完全可以自己重新写成分配一串连续的地址。

    纯属个人见解

    点赞 评论

相关推荐 更多相似问题