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

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]就是一级指针,它的内存分配如上面所述

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

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

    纯属个人见解

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

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题