关于函数指针返回值
#include <stdio.h>void point(char *p)
{
p += 3;
}
int main( )
{
char b={'a', 'b', 'c', 'd'}, *p=b;
point(p);
printf("%c\n", *p);
return 0;
}
为什么在point函数里 p+=3返回打印的是a 而*p+=3返回打印的是d
但是函数里打印p+=3和*p+=3的值都是d 你只有一个printf语句呢 wp231957 发表于 2020-5-3 11:36
你只有一个printf语句呢
我的意思是为什么p+=3不能返回d
*p+=3返回是d 一块小钱 发表于 2020-5-3 12:09
我的意思是为什么p+=3不能返回d
*p+=3返回是d
p存放着一个地址,你直接把地址加上3,那他地址就改变了,指向了别的东西,打印的结果肯定也就不对。
而*p是对p这个地址的节引用,指向的是值,因此改的也就是里面的值。 悠悠2264 发表于 2020-5-3 12:13
p存放着一个地址,你直接把地址加上3,那他地址就改变了,指向了别的东西,打印的结果肯定也就不对。
而 ...
那这个point(p);传的p是p的地址是嘛相当于&b 一块小钱 发表于 2020-5-3 12:24
那这个point(p);传的p是p的地址是嘛相当于&b
是滴,你理解的没错,传的是地址
页:
[1]