有人可以帮助分解这段代码中的指针吗?

时间:2017-04-11 04:19:03

标签: pointers

所以这是我目前使用减法方法划分的代码。

void int_div(unsigned int n, unsigned int d, unsigned int* q, unsigned int* r)
{
    unsigned int i = 0;
    *q = i;
    *r = n;
    for(n ; n >= 0 ; n = n - d)
        {
            if(n < d)
            {
                *r = n;
                break;
            }
            else
            {
               (*q)++;
            }
        }
    }

当我调用该函数时,它看起来像(int_div 5,2,&amp; q,&amp; r)。

所以当你调用这个函数时我很困惑。所以已经宣布q和r是指针。但那又如何呢?

*q = i;

强制指针指向i而不是将q更改为0?我试过了

q = &i;

我的输出结果截然不同。这是为什么?

1 个答案:

答案 0 :(得分:1)

qunsigned int指针,因此*q将为您提供此指针指向的值。因此,执行*q = i意味着您将q指向的内存值分配给i的值。例如,如果i = 3,那么现在q指向的值将为3

如果您q = &i,则重新指定q指向变量i的地址,这是一个完全不同的操作。

请仔细阅读C / C ++指针及其*&操作:)