c-如何在不改变变量*值的情况下改变变量值



我是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改变了。

相关内容

最新更新