动态分配的内存变量所对应的修改值(malloc应用)

这篇博客探讨了C语言中指针在函数参数传递中的应用。通过示例代码展示了如何使用指针修改函数外部变量的值,以及错误地尝试释放内存可能导致的问题。重点讨论了*q=200这行代码,它正确地改变了指针所指向的变量值。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <malloc.h>

void f(int * q) {
//	*p = 200;//error:p变量并没有在该函数中定义
//	q = 200;//error:字节将地址更改,没有达到要求
	*q = 200;//ok
//	free(q);//error:将导致值刚刚被更改,然后q指向的4个字节的内存就被释放了,4个字节所对应的值自然不复存在,只留下一个垃圾值12190032 
	 
} 
int main(void) {
	int *p = (int *)malloc(sizeof(int));//sizeof(int)返回是int所占的字节数
	*p = 10;
	
	printf("%d\n",*p);//>>10
	f(p);//调用f()函数,将*p所对应的变量值改为200 
	printf("%d\n",*p);//200 
	return 0;
}  

输出结果:

10
200

--------------------------------
Process exited after 0.03842 seconds with return value 0
请按任意键继续. . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值