(本人暂时处于菜鸟阶段……)
今天做一个函数的时候,想要返回一个类和一个整型,很自然的就想到用指针返回类,return返回整型。
然后我的写法是
函数体:
int Funtion(Element *p)
{
Element *A = new Element();
…… //对A进行的一些操作
p = A; //此处的p有值
int num = 0;
return num;
}
调用函数处:
Element *p = NULL;
Funtion(p); //此处返回的p为空
然后在师兄的讲解和编了一个很简单的如下程序之后,我明白了!
void funtion(int *a)
{
a[0]=5;
}
int main(int argc, _TCHAR* argv[])
{
int *b = new int[1];
funtion(b);
cout<<"*b="<<*b;
while(true);
return 0;
}
指针作为参数和一般类型作为参数其实是一样的,都是形参,都是把实参的值复制给形参,唯一的不同只是指针的性质。
当函数的参数为指针的时候,函数体内是通过传递来的指针去操作该指针指向的对象,而不能改变的值,使该指针指向其他的内存。
就如我犯得错误一样,当实参的这个指针原本为空,那么最后它依然为空!无论函数体内进行了何种操作,或是让这个指针指向了何种对象,因为此时改变的是形参的这个指针的值。