C/C++ 为什么在函数内部修改形参并不能真正地改变传入形参的值?

void GetMemory( char*p )
{
 p = (char*) malloc( 100 );
}
void Test( void )
{
 char*str = NULL;
 GetMemory( str );
 strcpy( str, "hello world" );
 printf( str );
}

试题4传入中GetMemory(char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );

后的str仍然为NULL;


答案:

一般有两种传递方式:

1)值传递----包括(数值传递,指针传递) 

2)引用传递

你问题中的指针传递,其实就是值传递:(下面这个你能看懂么)

void GetMemory( char p )
{
 p = ‘a’;
}
void Test( void )
{
 char str;
 GetMemory( str );
 pinrtf("%c",str);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部