1. 程式人生 > >第一天做LeetCode 19.1.10

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