关于值传递的一个问题
程序代码:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void sortString(char *p[],int n);
void
main(void)
{
int i = 0;
char *name[] = {"Pascal","Basic","C","FORTRAN","Computer design"};
sortString(name,5);
for(i = 0;i < 5;i++)
printf("%s\n",name[i]);
}
void
sortString(char *p[],int n)
{
char *tmp = NULL;
int i = 0,j = 0;
for(i = 0;i < n - 1;i++)
{
for(j = i + 1;j < n;j++)
{
if(strcmp(p[i],p[j]) > 0)
{
tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
}
调用上面的函数是不是说p和name共用相同的地址,直接改变指针数组p里面元素的指向,而不是交换内存里的内容,函数调用完不是释放掉了么,为什么可以影响name[],求教





