Я пытался попробовать некоторые демо-версии Codility для удовольствия, но я застрял в следующей простой проблеме с указателем (doh!). Мне было интересно, может ли кто-нибудь помочь мне?Проблема с вызовом Codility в C
Мой код:
struct Results solution(int N, int A[], int M) {
struct Results result;
N = 2;
const int N_const = N;
int counter[N_const];
counter[0] = 2;
counter[1] = 4;
result.C = counter;
result.L = 2;
return result;
}
Если структура определяется как:
struct Results {
int * C;
int L;
};
Однако, он возвращает:
Возвращаемое значение: [136343560, 1]
не [2, 4] Я ожидал
Теперь, что действительно смущает меня, как я бы ожидать, что выше проблема указатель с моей стороны, это следующие работы:
struct Results solution(int N, int A[], int M) {
struct Results result;
int counter[2];
counter[0] = 2;
counter[1] = 4;
result.C = counter;
result.L = 2;
return result;
}
Правильно возвращается:
Возвращаемое значение: [2, 4]
но следующий не:
struct Results solution(int N, int A[], int M) {
struct Results result;
int counter[10000];
counter[0] = 2;
counter[1] = 4;
result.C = counter;
result.L = 2;
return result;
}
Некорректно возвращает:
Возвращаемое значение: [0, 0]
Я чувствую, что я что-то очевидное отсутствует. Может кто-нибудь пролить некоторый свет на это?
Спасибо заранее
Ahh, я думал, что это будет что-то глупое с моей стороны! Это проблема с попытками этих поздних ночей. Это была согласованность возвращаемых значений, которые отбросили меня на правильный путь. Большое спасибо за помощь Джона. – user3038474