关于调用函数形参和实参的问题
都知道实参和形参值传递的单向性,为什么在指针数组中,还可以通过改变形参的值就使得指针的指向发生改变了呢,附上程序。#include<stdio.h>
#include<string.h>
int main()
{
void sort(char *name[],int n);//函数声明,排序
void print(char *name[],int n);//函数声明,输出字符串
char *name[]={"Follow me","BASIC","Great Wall"};//定义一个指针数组,它的元素分别指向三个字符串的首字符地址
int n=3;
sort(name,n);
print(name,n);
return 0;
}
void sort(char *name[],int n)
{
char *temp;
int i=0,j=i+1,k;
for(;i<n-1;i++)
{k=i;
for(;j<n;j++)
if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
{temp=name[i];name[i]=name[k];name[k]=temp;//就是这里,是怎么改变指向的,不是只能单向传递吗,这里改变指向对实参的影响是什么
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
return;
}