2 sinat 34654042 sinat_34654042 于 2016.05.02 19:49 提问

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:是不是用指向指针的指针的方法做使问题简化了,更易操作了?为什么我看的有点晕···

4个回答

asd001110
asd001110   2016.05.02 23:29
已采纳

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

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

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

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

纯属个人见解

asd001110
asd001110   2016.05.02 23:30

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

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

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

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

纯属个人见解

CSDNXIAOD
CSDNXIAOD   2016.05.02 20:01

用指针指向指针的方法对5个字符串排序并输出
指针指向字符串的问题
用指向指针的指针的方法对字符串和整数排序
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

asd001110
asd001110   2016.05.02 23:31

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

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

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

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

纯属个人见解

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用指向指针的指针的方法对5个字符串排序并且输出 */
#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#define LINEMAX 20 /* 用指向指针的指针的方法对5个字符串排序并且输出 */int main(int argc, char *argv[]) {    //指向指针的指针的方法对5个字符串排序    void sort(char **p); char **p,*pstr[5],st...
习题 8.20 用指向指针的指针的方法对5个字符串排序并输出。
C程序设计(第四版) 谭浩强 习题8.20 个人设计习题 8.20 用指向指针的指针的方法对5个字符串排序并输出。代码块:#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; void sort(char *s[5], int n); //定义排序函数 int main() { char *str[5], **p
用指向指针的指针的方法对5个字符串进行排序
/6、用指向指针的指针的方法对5个字符串进行排序。/ #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; void sort(char * str[],int paixu){ int i,j; char * temp; for(i=0;i&amp;lt;paixu-1;i++){ for(j=i+1;j&amp;lt;...
用指针指向指针的方法对5个字符串排序并输出
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日期:2012 年 12 月 07 日 * 版 本 号:v1.0 * * 输入描述:用指针指向指针的方法对5个字符串排序并输出
用指向指针的指针对5个字符串进行排序
#include #include #define MAXSIZE 100 void sort(char**, int); int main(void) { int i; char charArray[5][MAXSIZE]; char *pCharArray[5]; //输入 for (i = 0; i < 5; ++i)
用指向指针方法对N个字符串进行排序并输出
C语言版本的:#include "stdio.h"#include "stdlib.h"#include "string.h"void sort(char *str[],int size){ int i,j; char *temp; for(i=0;i<size-1;i++) { for(j=i+1;j<size;j++) { if(st
用指向指针的指针的方法对字符串和整数排序
【问题1】 用指向指针的指针的方法对5个字符串排序。 【C语言】 #include #include void sort(char **p) { int i, j, k; char *temp; for (i = 0; i < 4; i++) { k = i; for (j = i + 1; j < 5; j++) if (strcmp(*(p+k), *(p+j)
用指向指针的方法对n个整数排序并输出。
不仅用指向指针的方法对n个整数排序并输出,而且将排序单独写成一个函数,N个整数在主函数中的输入,最后在主函数中的输出。
习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。
C程序设计(第四版) 谭浩强 习题8.21 个人设计习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。代码块:#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void sort(int *s[10], int n); //定义排序函数 int main() { int
用指向指针的指针对字符串进行排序
用指向指针的指针,对字符串进行排序。 指向指针的指针,就是char ** pptr啦。pptr是一个指针,指向的地址内容存储的又是指向字符串的指针。 因此,首先要为pptr分配内存,存放指针,可以申请一个连续的区域来存放多个指向字符串的指针。 char ** pptr; //为5个指针分配地址 pptr = (char**)malloc(5*sizeof(char*)); //再依次为