const (포인터이용 한번더 물어볼꼐용.)
찬누리
질문 제목 : const 에서 포인터를 이용하여 결과값 바꾸기a와 b값 을 바꾸어야 합니당~질문 내용 :아래보시면 코드에 코드 수정 시작과 종료 사이에만 코드를 추가하여서.. a와 b의 값이 바뀌게 나오게 하라는건데요
오만가지 다 써서 해봤는데 계속 오류 뜨고 .. 아니면 a와 b값이 그대로 출력되버리네요 도움좀 부탁드립니다.
#includestdio.h
void swap(int *x, int *y);
int main()
{
const int a = 5;
const int b = 8;
/* -- 코드 수정 시작 --*/
/* -- 코드 수정 종료 -- */
printf(a : %d\n, a);
printf(b : %d\n, b);
return 0;
}
-
갤3
윗분들 말씀 처럼 const는 변수를 상수화 시키는 것이기 때문에 값을 변경할 수 없습니다.
그러므로 auto int( = int ) 형으로 선언해주세요.
스왑함수는 윗분이 잘 설명해주셨습니다.
int swap( int *pa , int *pb )
{
int temp;
temp = *pa;
*pa = *pb;
*pb = temp;
return 0;
}
이런식으로 선언하시면 되며, 호출시에는 변수 자체( 값에 의한 전달 )가 아니라 주 -
아유미
const는 constant(상수)에서 따온 것입니다. 상수는 값이 변하지 않습니다.
예를들어 5, 7, a는 상수입니다. (물론 a는 반드시 상수는 아니지만 관례)
즉 처음에 초기화 한 값은 절대 변하지 않고
const int a = 3
a = 4;
한다면 a=4; 에서 에러가 납니다.
(에러인지 경고인지는 기억이 안나지만 컴파일러에 따라 다르다고 들었습니다.)
그리고 const는 C++와서 추가된 문법이라고 들었습니다만...
어쨋든 자잘한건 생략 -
계획자
const 는 a, b 의 값을 변화시키지 않기 위해 써 놓은 것 아닌가요?
컴파일러를 터보C 2.0 이하 버전이나 쓰면 모를까...
불가능해 보이는데요.