帮小弟我解决下字符串指针的解释有关问题
帮我解决下字符串指针的解释问题!
void GetMemory( char *p )
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, "hello world " );
printf( str );
}
这是我在看面试题给出的答案
有些东西还是不明白
有人能帮解决吗?
试题四的给出的答案是
传入中GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );
后的str仍然为NULL;
为什么函数内部修改形参并不能真正的改变传入形参的值?函数的调用是是传递的地址传递,在函数中重新改变了p的值,为什么不能改变主函数中的str那?
------解决方案--------------------
void GetMemory( char **p )
{
*p = (char *) malloc( 100 );
}
char *str = NULL;
GetMemory( &str );
void GetMemory( char *p )
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, "hello world " );
printf( str );
}
这是我在看面试题给出的答案
有些东西还是不明白
有人能帮解决吗?
试题四的给出的答案是
传入中GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );
后的str仍然为NULL;
为什么函数内部修改形参并不能真正的改变传入形参的值?函数的调用是是传递的地址传递,在函数中重新改变了p的值,为什么不能改变主函数中的str那?
------解决方案--------------------
void GetMemory( char **p )
{
*p = (char *) malloc( 100 );
}
char *str = NULL;
GetMemory( &str );