点击器只是一个具有价值的的变量,这个数值是一个记忆地址。
指点人也是具有价值的变量。 这一价值是一位点人的记忆。
当你想要改变点子的 值时,你使用点子。
//Not a very useful example, but shows what I mean...
void getOffsetBy3Pointer(const char *pInput, char **pOutput)
{
*pOutput = pInput + 3;
}
你也称这一职能类似:
const char *p = "hi you";
char *pYou;
getOffsetBy3Pointer(p, &pYou);
assert(!stricmp(pYou, "you"));
我们现在考虑的是,如果我们试图以单一点来执行这一职能,将会发生什么。
//Note: This is completely wrong
void BadGetOffsetBy3Pointer(const char *pInput, char *pOutput)
{
//*pOutput refers to the first actual char element that pOutput points to.
pOutput = pInput + 3;
//pOutput now points to pInput + 3, but the variable we passed in remains distinct.
}
你也称这一职能类似:
const char *p = "hi you";
char *pYou = NULL;
BadGetOffsetBy3Pointer(p, pYou);
assert(pYou == NULL);
在BadGetOffsetBy3 Pointer的说明中,我们可以改变一些特性,但我们可以不改变你所说的话。