#include<stdio.h>
void cpy01(const char *s);
int main(){
char s[] = "hello";
printf("调用前:s_p = %p\n",s);//000000000062FE10
printf("调用前: s = %s\n",s);//hello
cpy01(s);
printf("调用1后:s_p = %p\n",s);//000000000062FE10
printf("调用1后: s = %s\n",s);//hello
// 调用完函数,为什么s没有变化呢?
// 中间的过程是什么,因为s2调用函数后消失了,s改回了原来的指向吗?
return 0;
}
void cpy01(const char *s){
char s2[] = "12345";
printf("调用1中:s_p = %p\n",s); //000000000062FE10
printf("调用1中:s2_p = %p\n",s2); //000000000062FDD0
s = s2;
printf("%s\n",s); //12345
printf("%p\n",s); //000000000062FDD0
// 这里不是说明把s指向更改了吗?
}
如上代码,const char * s的意思是 * s 不能修改,也就是指向的值不能动。
那么我在函数中修改了s的指向,为什么调用完函数s的指向没有变化?