|
发表于 2018-4-21 19:02:10
|
显示全部楼层
本帖最后由 ba21 于 2018-4-21 19:05 编辑
你直接说数组排序别人不就理解了。
//char *temp = NULL;
/*
temp = p [i];
p [i] = p [j];
p [j] = temp;
*/
这注释掉的部份不就实现了功能。
1,首先不说strcpy多此一举。
2,字符串的长度都不一样。"age","13thr","thr"长度一样吗?
3, char *mystring [] = {"age","13thr","thr"}; 这3个字符串肯定在一个连续的内存块中。
下面测试代码。自己去找原因吧:
void sort (char *p[],int num) 这个地方我也改了下,不影响,我只是觉得你**难理解。 指针数组,形参你不认为用 char *p[] 人家好理解些
- #include <stdio.h>
- #include <string.h>
- void sort (char *p[],int num)
- {
- int i,j;
- //char *temp = NULL;
- char temp01[20];
- strcpy (temp01,p[0]); //这边为什么会出错?
- printf("%s\n\n", temp01);
- }
- void print_sort (char **mystring,int num)
- {
- int i;
- for (i = 0;i < num;i++)
- {
- printf ("%s\n",*(mystring + i));
- }
- }
- int main ()
- {
- int i;
- char *mystring[] = {"age","13thr","thr"};
- int num = sizeof (mystring) / sizeof (mystring [0]);
- sort (mystring,num);
- print_sort (mystring,num);
- return 0;
- }
复制代码 |
|