一块小钱 发表于 2020-5-3 11:30:28

关于函数指针返回值

#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

wp231957 发表于 2020-5-3 11:36:08

你只有一个printf语句呢

一块小钱 发表于 2020-5-3 12:09:17

wp231957 发表于 2020-5-3 11:36
你只有一个printf语句呢

我的意思是为什么p+=3不能返回d
*p+=3返回是d

悠悠2264 发表于 2020-5-3 12:13:54

一块小钱 发表于 2020-5-3 12:09
我的意思是为什么p+=3不能返回d
*p+=3返回是d

p存放着一个地址,你直接把地址加上3,那他地址就改变了,指向了别的东西,打印的结果肯定也就不对。
而*p是对p这个地址的节引用,指向的是值,因此改的也就是里面的值。

一块小钱 发表于 2020-5-3 12:24:15

悠悠2264 发表于 2020-5-3 12:13
p存放着一个地址,你直接把地址加上3,那他地址就改变了,指向了别的东西,打印的结果肯定也就不对。
而 ...

那这个point(p);传的p是p的地址是嘛相当于&b

悠悠2264 发表于 2020-5-3 12:25:05

一块小钱 发表于 2020-5-3 12:24
那这个point(p);传的p是p的地址是嘛相当于&b

是滴,你理解的没错,传的是地址
页: [1]
查看完整版本: 关于函数指针返回值