关于指针的一个小程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:37:22
#include "stdafx.h"
#include <malloc.h>
#include <String.h>
void replace(char *p,char *q)
{
char *r;

r=p;p=q;q=r;
printf("replace 函数结果 : %s->%s\n",p,q);

}

void sort(char *p[5])
{ int i,j;
char *r;
for(i=0;i<5;i++)
{ for(j=i+1;j<5;j++)
{ if(strcmp(*(p+i),*(p+j))>0) {printf("需要交换的 %d:%s %s\n",i,p[i],p[j]);replace(p[i],p[j]); printf("交换后的 %d:%s %s\n",i,p[i],p[j]);

}

}

}

}

int _tmain(int argc, _TCHAR* argv[])
{ int i;
char *p[]={"ddddd","aaaaa","eredf","badef","3dfveg"};
// char *p[5];
//for(i=0;i<5;i++)
// scanf("%s",p[i]);
sort(p);
for(i=0;i<5;i++)
printf("%s\n",p[i]);

return 0;
}
------------------------这么写结

void replace(char *p,char *q)
你这个函数是想改变p,q的值,那么对p,q来说,这实际上是值传递,并不是指针传递.不要看见指针就以为是指针传递.在这里,要用指针传递的话,那就应该传p,q的指针,也就是char **.最好是使用引用传递
void replace(char *&p,char *&q)

因为修改字串常量是不允许的
char *p[]={"ddddd","aaaaa","eredf","badef","3dfveg"};


char *q = "123";
q[0] = '1';

是一个意思
=====================
char p[][10]={"ddddd","aaaaa","eredf","badef","3dfveg"};
这样就可以了

这是变量了