蓝色魅影 发表于 2019-12-3 10:22

c语言指针问题

本帖最后由 蓝色魅影 于 2019-12-3 13:12 编辑

有点不理解*a--这一行的含义,调试看了一下,不理解为什么*a--之后*a是2,按理说不是1之前的地址吗

姜云岩 发表于 2019-12-3 10:46

本帖最后由 姜云岩 于 2019-12-3 11:33 编辑

先说一下8 4这两个值我也没看懂但是我最近也在学c 指针的部分我前段时间也刚学过下面我说一下我的想法
y=func(&x,&y);    调用函数并把x的值传给a;y的值传给b也就是此时*a=1,*b=2在函数内部比较ab大小走else*a-- *a自减运算a的值变成0同时x的值改成0   *a+*b为2返回给y   y=2
x=func(*x,*y);调用函数   x=0 y=2带入走*a--0-1的值我觉得是-1
x=-1
输出x y的值    我觉得是-1和 2
上面是我自己的想法我手边没有电脑现在有的话运行一下再分步输出一下值就应该能知道哪里理解错了   或许我没有帮到你但是我自己也学到点后面我会继续关注的期待你的结果

姜云岩 发表于 2019-12-3 10:54

姜云岩 发表于 2019-12-3 10:46
先说一下8 4这两个值我也没看懂但是我最近也在学c 指针的部分我前段时间也刚学过下面我说一下我的想 ...

上面有一处说错了最后y的值为1   -1+2    为2

姜云岩 发表于 2019-12-3 10:55

姜云岩 发表于 2019-12-3 10:54
上面有一处说错了最后y的值为1   -1+2    为2

为1   手残

姜云岩 发表于 2019-12-3 10:56

姜云岩 发表于 2019-12-3 10:54
上面有一处说错了最后y的值为1   -1+2    为2

为1   手残

年少无为 发表于 2019-12-3 10:56

*a--是a的值自减,不是*a表示的值自检,

sexgod 发表于 2019-12-3 11:16

在程序中,如果a为指针,*a为取指针指向的地址的值,如果操作地址的话,直接a--

蓝色魅影 发表于 2019-12-3 11:26

本帖最后由 蓝色魅影 于 2019-12-3 11:30 编辑

姜云岩 发表于 2019-12-3 10:46
先说一下8 4这两个值我也没看懂但是我最近也在学c 指针的部分我前段时间也刚学过下面我说一下我的想 ...
我记得*a--中--的优先级是和*一样的,一样的话从右往左运算,所以应该是a的地址减1再取值

蓝色魅影 发表于 2019-12-3 11:28

本帖最后由 蓝色魅影 于 2019-12-3 11:30 编辑

sexgod 发表于 2019-12-3 11:16
在程序中,如果a为指针,*a为取指针指向的地址的值,如果操作地址的话,直接a--
1之前的地址应该怎么看,是看ascii码吗

蓝色魅影 发表于 2019-12-3 11:28

年少无为 发表于 2019-12-3 10:56
*a--是a的值自减,不是*a表示的值自检,

我知道,所以我不理解为什么地址减一再取值会是2
页: [1] 2 3
查看完整版本: c语言指针问题