我是C语言的新手,正在学习指针。我对下面的节目有点困惑。
我的问题是,是否有可能得到结果B?我正在更改a的值,但相应地,b由于指针而更改了值,并且我总是只得到结果a。如何获得结果B?任何帮助都将不胜感激。谢谢:(
#include <stdio.h>
void increment(int value) {
value++;
}
int main() {
int a = 6;
int *b = &a;
increment(a);
if(a == *b) {
printf("outcome A");
} else if(a > *b) {
printf("outcome B");
} else {
printf("outcome C");
} return 0;
}
在许多编程语言中,指针是存储内存地址的对象。指针引用内存中的某个位置,获得存储在该位置的值称为取消引用指针
看看这个代码片段
#include <stdio.h>
int main() {
int a = 6;
int *b = &a;
printf("a = %d b = %p *b = %dn", a, (void*)b, *b);
a = 20;
printf("a = %d b = %p *b = %dn", a, (void*)b, *b);
}
输出:
a = 6 b = 0x7fff3ead8d6c *b = 6
a = 20 b = 0x7fff3ead8d6c *b = 20
正如您所看到的,为a指定一个新值并没有改变b的值。但是,它确实改变了b所指向的值。也就是说,b没有改变,而*b改变了。