re: 自己工作中犯的几个小问题 郭龙 2012-05-23 23:58
@钟谢伟
修改之后,通过返回值传回来,这个具体深入原因我也不太理解。
看了你的随笔 <<函数参数传递,一二事 >>
void SetToSix(int *&pTempPtr)
这个也可以修改成二级指针
void SetToSix(int **pTempPtr)
{
*pTempPtr = &nSix;
}
int iTemp = 5;
int *p = &iTemp;
SetToSix(&p);
基本如下:
| --------------|
| 0x0000 FFF1 | -----> 5
|---------------|
|--------------|
| 0x0000 FFF5 | ------> 0x0000 FFF1
|--------------|
修改了指针 0x0000 FFF1,也就是修改了变量。
通过指针的方式给函数参数传值呢,从根本上来讲,它仍然是直接传值。
但是二级指针不好用,昨天就出现问题了,晕
1:只能取出来第一个
int *p[5] = {NULL,};
void Fun(int **p, int *iNum);
Fun(p, &iNum) 或者Fun(&(p[5]), &iNum);
都只能取出来第一个,希望你有时间研究一下,我昨天搞晕了
2:Right
最后改成
int *p = NULL;
int iNum;
Fun(&p, &iNum);
3:Error
int**p = NULL;
Fun(p);