关于值传递的一个问题
程序代码:
#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[],求教