一道【C语言】的题 关于指针的 急求!!!谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:14:24
#include <stdio.h>
point (char *p)
{
p+=3;
}
main()
{
char b[4]={'a','b','c','d'},*p=b;
point (p);
printf("%c\n",*p);
}
输出是a
那个P指针 为什么没有动呢? 那个POINT函数里面P不是与MAIN函数里面的P共用一个空间吗?。。。
谢谢~!!!!

用实参指针调用形参指针,地址变化带不回来。
point (char *p)
{
p += 3; // 这里变了,但带不回来
printf("%c\n",*p);
}

main()
{
char b[4]={'a','b','c','d'},*p=b;
point (p); // 这里 p 不变,还指向b[0]
printf("%c\n",*p);
p += 3; // 这样可变。
printf("%c\n",*p); // 变了。
}

你的程序实际上是这样的

#include <stdio.h>
point (char *t)
{
t+=3;
}
main()
{
char b[4]={'a','b','c','d'},*p=b;
point (p);
printf("%c\n",*p);
}

要实现你说的效果 可以使用引用~

#include <stdio.h>
point (char **p)
{
(*p)+=3;
}
main()
{
char b[4]={'a','b','c','d'},*p=b;
point (&p);
printf("%c\n",*p);
}
可以了 。
原因:(:)这是我刚才我在别的位置答的)
用指针作为函数的形参,其实形参值改变,实参值是不改变的。
你们所说的改变并不是正真意义上的实参值改变了。
那么我请问void