读书人

关于指针和函数,该怎么解决

发布时间: 2012-02-06 15:52:44 作者: rapoo

关于指针和函数
void point(char *q)
{
q+=3;
}
main()
{
char b[4]={ 'a ', 'b ', 'c ', 'd '},*p=b;
point(p);
printf( "%c\n ",*p);
getch();
}
各位大虾看看为什么这个输出的是a而不是d?

[解决办法]
在函数体内指针变化了,出来之后,它又回来了。
[解决办法]
void point(char **q)
{
*q+=3;
}
main()
{
char b[4]={ 'a ', 'b ', 'c ', 'd '},*p=b;
point(&p);
printf( "%c\n ",*p);
getch();
}
[解决办法]
你先补充一下基础把。
ps
上面是一个子函数,他的形参是实参的一份副本,所以在子函数中操作参数不会影响到实参,但下面,变量的作用域在同一个函数空间。
[解决办法]
当然有分别了
把指针p当作一般的变量
void f(int a){a++;}
int a=3;
f(a);
cout < <a < <endl;//输出3,f不能改变a

换成指针也一样的,上面都跟你说了,指针本身也是一个int,函数改变的是p的一个copy,

p存放一个地址,
p的copy最初存放跟p相同的地址,函数内部对p的copy进行修改
p存放的地址不会改变,修改的是p的copy,所以*p当然还是原来那块内存

读书人网 >C语言

热点推荐