所以这是我目前使用减法方法划分的代码。
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;
我的输出结果截然不同。这是为什么?
答案 0 :(得分:1)
q
是unsigned int
指针,因此*q
将为您提供此指针指向的值。因此,执行*q = i
意味着您将q
指向的内存值分配给i
的值。例如,如果i
= 3,那么现在q
指向的值将为3
。
如果您q = &i
,则重新指定q
指向变量i
的地址,这是一个完全不同的操作。
请仔细阅读C / C ++指针及其*
和&
操作:)