第一天做LeetCode 19.1.10

为了备战蓝桥杯,今天第一天做LeetCode,就做了一道题花了半个小时,期间有各种错误,深深的感受到自己连菜鸡都算不上。

题目:给定一个数组nums,与目标值target,在该数组中找到和为目标值的两个整数,并返回他们的数组下标(暴力破解)

int* twoSum(int* nums, int numsSize, int target)   //最终还是借鉴大神的
{
    static int a[2]={0};   //static型占用的内存不会因为函数的返回而释放
    

	for (int i = 0; i < numsSize - 1; i++)  //注意循环的值
	{
		for (int j = i+1; j < numsSize; j++)
		{
			if (nums[i] + nums[j] == target)
			{
				a[0] = i;
				a[1] = j;
				return a;
			}
		}
	}
	return 0; 
}

遇到的问题

1. 为什么用static

2.为什么要返回 return a

 

3.为什么要有 return 0

指针函数返回值:

指针函数的使用和一般函数的使用相同,但需注意返回值问题。对于一个返回值为指针的函数,不能返回auto型局部变量的地址,但可返回static型变量的地址。
这是因为auto型变量的生存周期很短,当函数返回时,auto型变量的内存空间将被释放,如果返回值是auto型变量,那么这个返回指针将无效,变成野指针。而static类型变量占用的内存空间则不会因为函数返回而被释放,不会出现野指针问题。
所以编写指针函数使要注意返回值。总体原则是:返回的指针对应的内存空间不会因函数返回则被释放掉。常用的返回指针有以下几种:
(1)      函数中动态分配内存空间(通过malloc等实现)的首地址;
(2)      静态变量(static)或全局变量所对应的变量的首地址;
(3)      通过指针形参所获得的实参的有效地址
--------------------- 
该段来自:https://blog.csdn.net/wangxufa/article/details/72935091 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值