point(char *p)
{
p+=3;
}
main()
{ char b[4]={'m','n','o','p'},*pt=b;
point(pt);
printf("%c\n",*pt);
}
本以为答案是p,但是为什么是m?
答案解释是因为这次调用函数是值传递而不是址传递,为何?(*p)+3倒是可以输出p,但是为什么呢?不用函数调用,使用p+3也可以输出p。函数调用到底发生了什么,用指针好迷糊。
point(char *p)
{
p+=3;
}
main()
{ char b[4]={'m','n','o','p'},*pt=b;
point(pt);
printf("%c\n",*pt);
}
本以为答案是p,但是为什么是m?
答案解释是因为这次调用函数是值传递而不是址传递,为何?(*p)+3倒是可以输出p,但是为什么呢?不用函数调用,使用p+3也可以输出p。函数调用到底发生了什么,用指针好迷糊。