Void형 포인터부분을 공부중인데요..
나츠
질문 제목 : void형 포인터부분을 공부중인데요.문제는 입력값 두개를 받아서 더하고, 빼고, 곱하고, 나누기 사칙연산을 void형 포인터 형태로 구현하는건데요..
하긴했는데 첨에 사칙연산부분을 이렇게하니까 오류가 나더군요.. 수정하긴했는데 왜 이부분에서 이렇게하면 오류가나는건지
잘 모르겠네요 . ㅠㅠ;
void* add(int a, int b)
{
void* r;
r =a + b;
return r;
}
질문 내용 :
#include stdio.h
void* add(int a, int b);
void* subtract(int a, int b);
void* multiply(int a, int b);
void* divide(int a, int b);
int main()
{
int x, y;
void* a;
void* s;
void* m;
void* d;
printf(두개의 값을 입력하세요);
scanf(%d %d, &x, &y);
a = add(x, y);
s = subtract(x, y);
m = multiply(x, y);
d = divide(x, y);
printf(%d + %d = %d \n, x, y, *(int*)a);
printf(%d - %d = %d \n, x, y, *(int*)s);
printf(%d * %d = %d \n, x, y, *(int*)m);
printf(%d / %d = %d \n, x, y, *(int*)d);
return 0;
}
void* add(int a, int b)
{
void* r;
static int result;
r = &result;
result = a + b;
return r;
}
void* subtract(int a, int b)
{
void* r;
static int result;
r = &result;
result = a - b;
return r;
}
void* multiply(int a, int b)
{
void* r;
static int result;
r = &result;
result = a * b;
return r;
}
void* divide(int a, int b)
{
void* r;
static int result;
r = &result;
result = a / b;
return r;
}
-
큰돌찬 2023-05-10
물어보신 오류부분은 a 와 b는 정수인데 두 정수를 더한 정수값을 주소 r에 대입할려니 오류입니다.
void 형 포인터란 해당 포인트 변수에 * 연산하여 주소가 가리키고 있는 값을 찾아갈 때
그 값이 정수인지 실수인지 문자형인지 더블인지 정하지 않은 포인터란 말입니다.
보통 사용하고자하는 타입으로 캐스팅을 합니다.