提出问题:
在写程序时,有时候会用到在主程序中只定义一个指针变量,而在子程序中创建一个这个变量指向的动态数组,并且赋值。这种情况下只要保证实参和形参指向同一个地址就可以了。
例程:
主程序:
主程序:
Main()
{
Char * pCh;
creatDynArray( & pCh);
}
子程序:
Void creatDynArray(char ** inputPointer)
{
* inputPointer = new char[ 10 ];
// 动态生成接受字符串
For(int i = 0 ;i < 10 ;i ++ )
{
* inputPointer[i] = ' a ' ;
}
}
Main()
{
Char * pCh;
creatDynArray( & pCh);
}
子程序:
Void creatDynArray(char ** inputPointer)
{
* inputPointer = new char[ 10 ];
// 动态生成接受字符串
For(int i = 0 ;i < 10 ;i ++ )
{
* inputPointer[i] = ' a ' ;
}
}
而下一种方式是不可以的:
反例如下:
主程序:
Main()
{
Char * pCh;
creatDynArray(pCh);
}
子程序:
Void creatDynArray(char * inputPointer)
{
inputPointer = new char[ 10 ];
// 动态生成接受字符串
For(int i = 0 ;i < 10 ;i ++ )
{
inputPointer[i] = ’a’;
}
}
Main()
{
Char * pCh;
creatDynArray(pCh);
}
子程序:
Void creatDynArray(char * inputPointer)
{
inputPointer = new char[ 10 ];
// 动态生成接受字符串
For(int i = 0 ;i < 10 ;i ++ )
{
inputPointer[i] = ’a’;
}
}
因为这种方式中,实参pCh和形参inputPointer所指向的地址不同,所以实参并不指向以形参开辟的动态空间,