为什么用字符指针数组了,看不懂啊,详细解释下...

来源:百度知道 编辑:UC知道 时间:2024/05/03 08:42:56
#include "stdio.h"
#include "conio.h"
main()
{
char *str1[20],*str2[20],*str3[20];
char swap();
printf("please input three strings\n");
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
printf("after being sorted\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
getch();
}
char swap(p1,p2)
char *p1,*p2;
{
char *p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
是不是可以把20全去掉啊?

这是一个很简单的字符串大小排序程序

如果不用指针数组,只用数组,函数调用结束后要想是变化影响到主函数里,必须返回一个地址,有两种方法解决
1定义指针函数
2就是上面的方法了
为了解决这个问题,使用指针数组,就可以在无返回值的情况下,使变化能影响到主函数里

这里的指针数组就相当于二级指针,数组名相当于一级指针,对于一级指针的操作用二级指针很合理啊
还有,在定义函数的时候,那里好像多了一行…
手机不方便
有问题
留言
必回

我重申一遍
用法没有一点问题
还有楼下的朋友
改为char str1[20],str2[20],str3[20];
之后
调用函数没有任何意义
注意
这个函数是没有返回值的
要想保留函数中的交换
只能采用我上边说的两种方法

字符数组相当于字符串
比较函数是对字符串的操作
即操作的对象是字符串
但是,函数还没有返回值
所以要用指向字符串的指针
即指向一围=维数组的指针
即上面的定义

还有
楼主刚学指针
对于他的理解还不深刻
不要着急
多用指针写一些简单的程序
到后面你就会觉得他是理所当然的

程序错了,应该是
char str1[20],str2[20],str3[20];

应该把指针数组改成一般的数组