내 코드에서 어딘가에 뭔가 나쁜 일을하고 있습니다. extrema 변수가 실행될 때 정의되지 않은 동작이 발생하지만 대부분 실행되지 않습니다. 어떤 도움이라도 정말 좋을 것입니다. [*] 연산자보다 우선 함
#include <stdio.h>
void get_extrema(int quadrant, int **extrema)
{
if (quadrant == 1)
{
*(extrema)[0] = 0;
*(extrema)[1] = 90;
}
else if (quadrant == 2)
{
*(extrema)[0] = -90;
*(extrema)[1] = 0;
}
}
void print(int* arr)
{
printf("%i",arr[0]);
printf(",");
printf("%i\n",arr[1]);
}
int main(void)
{
int *extrema = (int*)malloc(2*sizeof(int));
get_extrema(1,&extrema);
print(extrema);
get_extrema(2,&extrema);
print(extrema);
}
는 또한 다음과 같이 포인터 연산을 사용하여 극값 배열 편집을 시도 :
**(extrema) = 0;
**(extrema+1) = 90;
을하지만 그 중 하나가 작동하지 않았다. 나는 이것이 어디가 잘못 될지 전혀 모른다. 정말로 도움이 될 수있다.
printf ("% s", arr [0]); 용의자입니다. % s는 문자열을 나타냅니다. – Bathsheba
@ Bathsheba 좋은 지적. 그게 내 복사의 실수 였어. – eatonphil
@philaeton ;-) UB 포인트가 적습니다. – Bathsheba