想要在函数内改变指针的指向,要给函数传入指针的指针,才能改变指针的指向
也就是传入指针的地址才能改变指针
问题和函数传值不改变该值在主函数本质上应该是一样的(之前没注意想…傻了大概)
#include<stdio.h>
void move(char* p)
{
printf("%p\n", p);
printf("%s\n", p);
p++;
printf("%p\n", p);
printf("%s\n", p);
*p++;
printf("%p\n", p);
printf("%s\n\n", p);
}
int main()
{
char str[10] = { "abcdefgh" };
char* p = str;
printf("bofore,main:%c\n", *p);
printf("before,main:%p\n", p);
printf("before,main:%s\n\n", p);
move(p);
printf("after,main:%c\n", *p);
printf("after,main:%s\n", p);
printf("after,main:%p\n\n", p);
p++;
printf("after,main:%c\n", *p);
printf("after,main:%s\n", p);
printf("after,main:%p\n\n", p);
*p++;
printf("after,main:%c\n", *p);
printf("after,main:%s\n", p);
printf("after,main:%p\n", p);
}
bofore,main:a
before,main:00AFFD84
before,main:abcdefgh
00AFFD84
abcdefgh
00AFFD85
bcdefgh
00AFFD86
cdefgh
after,main:a
after,main:abcdefgh
after,main:00AFFD84
after,main:b
after,main:bcdefgh
after,main:00AFFD85
after,main:c
after,main:cdefgh
after,main:00AFFD86