是小狐狸啊 2016-05-02 03:49 采纳率: 63.6%
浏览 2166
已采纳

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 07:29
    关注

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

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

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

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

    纯属个人见解

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部