*1、nums 与nums[]的区别:
*nt array[100]; 定义了一个数组,array是数组的名字,array在系统处理时,的确是用整型指针处理的,array中记录了数组在内容占用空间区域的首地址。
你使用的 int array[]; 的定义方式,只能用于在子函数中定义参数数组时使用,此时参数数组的大小由实际参数数组的大小确定。
int *array;也可以定义数组,但是有效使用时,必须首先为指针申请空间:
array=(int *)malloc(sizeof(int)*100);
开设空间之后,指针array与数组 int array[100]; 在使用时具有相同的功效。
但是要注意,使用数组定义,array就相当于一个记录数组首地址的常数,是不能被改变的。
而定义为指针的array,在释放空间free(array)之后,可以重新申请新的空间,即可以重新被赋值使用,如:array==(int *)malloc(sizeof(int)500);
所以,简单的说,定义的数组名就相当于一个指向数组首地址的地址常数,
定义的指针,相当于一个指向数组首地址的变量。
2、returnSize如果不加值的话,返回为空。
/**
- Note: The returned array must be malloced, assume caller calls free().
/
int twoSum(int* nums, int numsSize, int target, int* returnSize){
int i,j,k;
int ret;
ret=(int)malloc(sizeof(int)*2);
for(i = 0;i< numsSize;i++)
{
for(j = i+1;j< numsSize;j++)
{
if(nums[i]+nums[j] == target)
{
*returnSize=2;
ret[0] = i;
ret[1] = j;
}
}
}
return ret;
}