以指针作为参数,在子函数中动态分配内存
提出问题:
在写程序时,有时候会用到在主程序中只定义一个指针变量,而在子程序中创建一个这个变量指向的动态数组,并且赋值。这种情况下只要保证实参和形参指向同一个地址就可以了。
例程:
主程序:
主程序:
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所指向的地址不同,所以实参并不指向以形参开辟的动态空间,