自己申请内存;
先申请内存做指针,然后在指针区域申请内存存值
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char **getmems(int num)
{
char** p2=NULL;
int i=0;
p2=(char**)malloc(sizeof(char*) * num);
for(i=0;i<num;i++)
{
p2[i] = (char*)malloc(100);
sprintf(p2[i],"%d%d%d",i+1,i+2,i+3);
}
return p2;
}
void prints(char **p2,int num)
{
int i=0;
for(i=0;i<num;i++)
{
printf("%s\n",p2[i]);
}
}
void freeit(char **p2,int num)
{
int i=0;
for(i=0;i<num;i++)
{
if(p2[i]!=NULL)
{
free(p2[i]);
p2[i]=NULL;
}
}
if(p2!=NULL)
free(p2);
}
void main()
{
char **p2=NULL;
int num=10;
int i=0,j=0;
int len1=0,len2=0,len3=0;
char *remp=NULL;
char buff[100];
//申请内存
p2=getmems(num);
//打印
printf("start\n");
prints(p2,num);
for(i=0;i<num;i++)
{
for(j=i+1;j<num;j++)
{
if( strcmp(p2[i],p2[j]) <0 )
{
//交换指针
/*remp=p2[i];
p2[i]=p2[j];
p2[j]=remp;*/
//交换内存
strcpy(buff,p2[i]);
strcpy(p2[i],p2[j]);
strcpy(p2[j],buff);
}
}
}
//打印
printf("end\n");
prints(p2,num);
//释放内存
freeit(p2,num);
system("pause");
}