sub()函数的第一个参数是一个字符型指针,指针就是一个地址,调用函数时,也只是将这个地址传递过去,这个地址不变,但是它所指向的内容还是可以被改变的
至于你说的形参不改变实参,就是指这个地址在调用前后不变
而函数形参在函数结束之后会被释放,是指存储这个地址的指针变量a会被释放,而这并不影响s
sub(char *a,int t1,int t2);
函数将字符数组的首指针传递给了a,你可以将字符数组的变量名同样理解为指针,所以你操作的实际上还是原来的内存区域。
给你举个例子 change(int &a,int b){a=10;b=10;} 若在主程序中a=0;b=0;调用change(a,b);则主程序中的a的值会发生改变。因为你在程序中传递给change函数的是a的地址,b传递的是数值,程序会为b开辟新的内存用来存储b所传递的值,而a传递的是地址,实际操作的对象仍然是原来主程序中的变量a所对应的内存。所以数值会发生改变。
因为字符串名就是一个指针名,调用的函数也是直接修改的是内存地址里内容。所以函数释放后,被修改的内容就会被保存。
sub(s,7,SIZE-1);这个调用里面s是一个char数组的首地址,sub函数内部的操作是针对这个地址的。
sub(char*a,int t1,int t2)
{char ch;
while(t1
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;}}
你的这个功能就只能实现这个,你的目的是什么
这个我也不知道啊!!