int a; (1000번지라고 가정)
int b=3; (2000번지라고 가정)
1번 문제 *a=*b;
2번 문제 &a=&b;
3번 문제 *a=b;
4번 문제 a=*b;
5번 문제 a=&b;
6번 문제 &a=b;
7번 문제 *a=&b;
8번 문제 &a=*b;
int *a; (1000번지라고 가정)
int b=3; (2000번지라고 가정)
9번 문제 *a=*b;
10번 문제 &a=&b;
11번 문제 *a=b;
12번 문제 a=*b;
13번 문제 a=&b;
14번 문제 &a=b;
15번 문제 *a=&b;
16번 문제 &a=*b;
대부분이 말이 안되는건 알지만 그 의미들을 명확히 이해하고 싶습니다.
ex) 1번 문제 *a=*b; ex) a가 가르키는 곳은 b가 가르키는곳 즉 3번지의 값을 가르킴 하지만 실제로는 a가 가르키는 곳은 없고, 3번지의 값또한 분명치 않기에 에러! 이런식으로 답변 부탁드립니다.
1. 포인터 변수 없이는 모두 문제가 되네요..^^; 포인터 변수가 있어야 문제가 성립하겠습니다.
2. 첫번째 문제(포인터 변수 2개를 만들고, 변수의 주소를 대입합니다.)
int a; (1000번지라고 가정)
int b=3; (2000번지라고 가정)
int* pA = &a; // pA라는 포인터 변수에 a변수의 주소 1000번지 저장 (현재값: 0)
int* pB = &b; // pB라는 포인터 변수에 b변수의 주소 2000번지 저장 (현재값: 3)
시작 : a = 0, b = 3 , pA = 1000, pB = 2000
---------------------------------------------------------------------------
1번 문제 *a=*b; : a,b는 포인터가 아니라 *연산 불가 ==> *pA = *pB;
결과 : a = 3
2번 문제 &a=&b; : a의 주소 상수에 다른 주소 저장 불가 ==> pA = &b;
결과 : pA = 2000
3번 문제 *a=b; : a는 포인터가 아니라 *연산을 통한 할당 불가 ==> *pA = b;
결과 : a = 3
4번 문제 a=*b; : b는 포인터가 아니라 *연산을 통한 읽기 불가 ==> a = *pB
결과 : a = 3
5번 문제 a=&b; : a는 포인터가 아니라 주소저장 불가 ==> pA = &b;
결과 : pA = 2000
6번 문제 &a=b; : a의 주소 상수에 값을 대입 불가 ==> *pA = b;
결과 : a = 3
7번 문제 *a=&b; : a는 포인터가 아니라 *연산 및 주소저장 불가
==> pA = &b; 또는 pA = pB;
결과 : pA = 2000
8번 문제 &a=*b; : a의 주소 상수에 할당 불가,b는 포인터가 아니라 *연산 불가
==> a = *pB;
결과 : a = 3
-------------------------------------------------------------------------
종료 : a = 3, b = 3, pA = 2000, pB = 2000
3. 두번째 문제는 경우의 수가 거의 유사하여 생략합니다.
4. 예제코드를 기술합니다.
int a;
int b = 3;
int* pA = &a;
int* pB = &b;
*pA = *pB;
printf("1) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
pA = pB;
printf("2) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
*pA = b;
printf("3) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
a = *pB;
printf("4) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
pA = &b;
printf("5) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
*pA = b;
printf("6) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
pA = &b;
printf("7) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
*pA = b;
printf("8) a=%d, b=%d, pA=%d, pB=%d \n", a, b, pA, pB);
도움이 되시길 바랍니다.
감사합니다.
written by
legend
C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.
서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,
c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,
c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,
데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도
'좋은질문' 카테고리의 다른 글
C++ 369 게임만는거 설명좀요ㅠㅠ부탁드립니다 (0) | 2014.09.15 |
---|---|
C# DataGridView 질문이요 (0) | 2014.09.14 |
C# enum 질문 (0) | 2014.09.11 |
C# 클래스에서 Form의 컨트롤 값 받아오기 (0) | 2014.09.10 |
C# if문 내부에서 변수 선언하는 방법 (0) | 2014.09.09 |