【求助】形参与实参的传值和传址问题!
#include<stdio.h>#include<string.h>
int main()
{
void print(char *p[],int n);
void convert(char *p[],int n);
char *p[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
puts("________The Origin following is:________\n");
print(p,5);
convert(p,5);
puts("________The Turned following is:________\n");
print(p,5);
return 0;
}
void print(char *p[],int n)
{
int i;
for(i=0;i<n;i++)
{
puts(p[i]);
putchar('\n');
}
}
void convert(char *p[],int n) //指向指针的数组。。。
{
int i,j;
char x[100];
char *q;
q=x;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(p[j],p[j+1])>0)
{
q=p[j];
p[j]=p[j+1];
p[j+1]=q; //我感觉此处相当于给形参数据回传给了实参。。。
}
}
}
}
//为什么这个字符串排序的程序可以正确排序。我感觉这个函数是值传递而非地址传递~~ 应该形参的排序应该无法影响形参才对。但是它确实起作用了,请解释一下哦!