在C语言中,我在跟踪代码时遇到麻烦,并且不确定如何计算该值?

时间:2019-04-05 15:16:41

标签: c function pointers

我正在跟踪代码,但我不了解如何计算值。我的问题是代码旁边的注释。

我正在跟踪代码,并且我理解除2之外的所有部分。我在下面发布了这2部分。如果有人可以帮助我,我将感到非常高兴。

LMEM->PCCRMR = 0;

2 个答案:

答案 0 :(得分:0)

在第一个printf中,x == 2因为第一次调用function1时是指向*m的指针,所以您将其分配给所指向的位置通过x(即m的位置)x

在第二个*m + n == x + x == 1 + 1 == 2中,printf是因为在y == 8中返回的值增加了2(所以function2),但没有更新3 + 2 == 5,所以在yfunction1的结果值与function2的旧值(y)相加。 3 + 5 == 8也返回该值,function1也返回。

答案 1 :(得分:0)

因此,在function1内部:

int function1(int *m, int n) {
    *m = *m + n;
    return(*m);
}                 /* 
...                */
y = function1(xptr,x);
  • n持有x值的副本,
  • m持有值xptr的副本,该值是x的地址。
  • *m是指m持有的地址的内容
  • ... *m = *m + n

那是“分配给x地址的内容:x地址的内容,加上x的值”。

x地址的内容(也就是它的值)为1。因此,我们为持有x值的地址内容分配1 +1。