avatar
请教一段小程序# JobHunting - 待字闺中
y*9
1
main(){
double *res;
double i1, i2, i3;
i1=2.0;
res=&i1;
res++;
i1 = 3.0;
res= &i1;
res++;
i1 = 4.0;
res = &i1;
res = res-2;
printf("%f\n", *res);
}
这个为什么是0呢
avatar
f*t
2
res++、res=res-2改的都是地址,不是值
avatar
y*9
3

那我如果想要得到2.0 请问该怎么改呢? 多谢多谢

【在 f*******t 的大作中提到】
: res++、res=res-2改的都是地址,不是值
avatar
M*5
4
*res -= 2;

【在 y********9 的大作中提到】
:
: 那我如果想要得到2.0 请问该怎么改呢? 多谢多谢

avatar
p*2
5
这个一定是0吗?
avatar
M*5
6
我觉得不一定,应该是随机的。。。估计lz恰好跑出了一个0

【在 p*****2 的大作中提到】
: 这个一定是0吗?
avatar
y*9
7

不知道 只是感觉不会是2.0

【在 p*****2 的大作中提到】
: 这个一定是0吗?
avatar
p*2
8

我感觉也是。

【在 M********5 的大作中提到】
: 我觉得不一定,应该是随机的。。。估计lz恰好跑出了一个0
avatar
y*9
9

额。。我的意思是 如何返回到第一次指针所指的数值(2.0) 不是减法。。
还是这段程序根本就是错的 不能用一个变量反复赋值呢?

【在 M********5 的大作中提到】
: *res -= 2;
avatar
p*2
10

你重新赋值之后以前的++就没用了。

【在 y********9 的大作中提到】
:
: 额。。我的意思是 如何返回到第一次指针所指的数值(2.0) 不是减法。。
: 还是这段程序根本就是错的 不能用一个变量反复赋值呢?

avatar
y*9
11

所以必须用3个不同的变量?

【在 p*****2 的大作中提到】
:
: 你重新赋值之后以前的++就没用了。

avatar
M*5
12
就是这个意思,我觉得lz你可以把指针好好看一下,stanford那个programming
paradigms把内存,指针讲得非常清楚。。。

【在 p*****2 的大作中提到】
:
: 你重新赋值之后以前的++就没用了。

avatar
y*9
13

嗯 好的 主要是分别用i1, i2, i3可以 但是只用一个变量就不行了。。C都忘记了。。
谢谢大家

【在 M********5 的大作中提到】
: 就是这个意思,我觉得lz你可以把指针好好看一下,stanford那个programming
: paradigms把内存,指针讲得非常清楚。。。

avatar
p*2
14
看到你的++就心里发颤。
avatar
y*9
15
额。 二爷为啥这样讲
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。