关于C中指针使用的注意事项

本文通过LeetCode实战经验分享了C语言中指针与内存管理的关键知识点,包括使用malloc进行动态内存分配的方法,以及如何正确处理局部变量的生命周期问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在leetcode刷题时,想着用一用很久没用过的C,于是就被教育了。。

首先,在leetcode上连着出了两次编译错误,想了N久才猛然回忆起来,C中貌似是没有new的,要分配指针必须使用malloc变量,如:
int *answer=new int[2];    //错,仅适合c++
int *answer=(int*)malloc(sizeof(int)*2);     //对

然后,是在本机上做实验时的一个错误,就是在c里面,局部变量在函数体结束后生命期也结束,它的指针(即它的地址)是无效变量的地址,所以函数不能返回这种地址值,如果要返回,必须要用new或者malloc分配到的空间才行,这样即使在函数体中的指针本身已经失效,但它指向的内存空间还是存在,可以用返回值来带给父函数。如:
int* twoSum(int* nums, int numsSize, int target) {
int answer[2];
return answer;
}//错误,局部数组对应的指针无法返回

int* twoSum(int* nums, int numsSize, int target) {
int *answer=new int[2];
return answer;
}//正确,可以把这片内存地址返回,即使函数结束了,这片内存空间仍没失效
总结一句就是:局部指针变量在函数结束后生命期也结束,但只要它指向的变量或函数或任何存储实体的生命期没有结束,函数返回的指针(地址)就是有效的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值