讨论一下C语言中用冒泡法对6个字符串按由小到大的顺序进行排序问题?

6个字符串按由小到大的顺序进行排序
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#define MAXLINE 20
void fun(char *pstr[6]) /*标号1*/
{
int i, j;
char *p;
for(i=0;i<5;i++)
{
for(j=i+1;j<6;j++)
{
if(strcmp(*(pstr+i),*(pstr+j))>0)
{
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
*(pstr+j)=p;
}
}
}
}
void main()
{
int i;
char *pstr[6],str[6][MAXLINE];
system("CLS");
for(i=0;i<6;i++) pstr[i]=str[i];
printf("\nEnter 6 string(1 string at each line):\n ");
fun(pstr); /*标号2*/
printf("The strings after sorting:\n ");
for(i=0;i<6;i++)
printf("%s\n ",pstr[i]);
}
标号2中的pstr是指针数组char *pstr[6]的首地址,可以理解为二级指针常量,传递给形参 标号1中的语句时使用char *pstr[6]接收pstr如何理解,是不是应该改成char (*pstr)[6]还是别的原因,还是形参函数中的参数我在理解的时候有问题?C资深人士是怎么理解的,非懂勿入,谢谢分享!
标号2 中将void fun(char *pstr[6])写成 void fun(char *pstr)可以吗,为什么一定要带[6],标号二中pstr说白了也就是一个一维数组的首地址,就是列指针常量,为啥形参中要用void fun(char *pstr[6])接收呢,求解!

char *pstr[6]是一个指针数组,数组中的每个元素都是char*类型,可以理解为数组pstr是一个指针的集合。pstr是这个指针集合的首地址,调用fun函数时,传递地址。

标号2 中将void fun(char *pstr[6])写成 void fun(char *pstr)可以吗

这肯定不可以啊,char *pstr是一个字符指针,存放的是字符,只是该指针指向这个字符串的首地址
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答