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

本文探讨了C/C++中函数内部通过指针修改参数值为何无法真正改变原始变量的原因。内容涉及值传递、指针传递和引用传递的区别,以及malloc分配内存后指针的变化情况。通过示例代码解释了当在函数中使用malloc改变指针地址时,外部变量不会受到影响的现象。
摘要由CSDN通过智能技术生成
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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值