第一天做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 

猜你喜欢

转载自blog.csdn.net/Hunt_D/article/details/86261589
今日推荐