#include <stdio.h>
int* plusOne(int* digits, int digitsSize, int* returnSize){
int* result=0;
if (digits[digitsSize-1]<9){
*returnSize=digitsSize;
int* result = (int *)malloc(*returnSize*(sizeof(int)));
memcpy( result, digits, *returnSize*(sizeof(int)) );
result[digitsSize-1]= (result[digitsSize-1])+1;
}
return result;
}
int main()
{
int array[3]={1,2,3};
int* resultSize= malloc(sizeof(int));
int* result = plusOne(&array,3,resultSize);
printf("%i",result[2]);
return 0;
}
Код выше segfaults в printf("%i",result[2]);
, потому что результат по какой-то причине равен 0 ... Однако, когда я помещаю return result;
в оператор if, тогда код работает как ожидалось.
Почемуэто тот случай?If будет оцениваться, и результат будет одинаковым независимо от ситуации.Это оптимизация компилятора?(Это просто пропускает оператор if?)