对于一维数组来说
就像下面这个例子,是这样一个题
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。
int* twoSum(int* nums, int numsSize, int target, int* returnSize){for(int i=0;i<numsSize;i++){for(int j=i+1;j<numsSize;j++){if(nums[i]+nums[j] == target){int *r;r=(int *)malloc(sizeof(int)*2);*returnSize=2;r[0]=i,r[1]=j;return r;}}}*returnSize=0;return 0;}
这个题目要求你返回一个一维数组,首先需要定义一个指针来存放所要输出的数据,这里定义了一个
*r,然后我们需要使用malloc函数给这个指针增加空间,如下:
r = (int *)malloc(sizeof(int)*n); //申请内存空间,大小为n个int长度。
*******尤其要注意的一点是,要给这个指针赋值,这里我们需要返回 [i,j],所以需要 r[0]=i,r[1]=j;否则 系统自动给你赋值。最后要在条件之外return 0;或者return NULL;
对于二维数组来说
这个是正确的做法
int **result = (int **)malloc(rows * sizeof(int *));for (int i = 0; i < rows; i++){result[i] = (int *)malloc(columns * sizeof(int));}