Programming Learning Diary

다음 코드를 보고 출력을 예사하시오. (포인터 문제)

페이지 정보

작성일 19-11-29 09:27

본문




문제1


#include <stdio.h>

int main() {

int a = 10;

int b = 20;

int *ptr;

ptr = &a;

*ptr = 30;  

ptr = &b;

*ptr = 10;


printf("%d\n",a);

printf("%d\n",b);

printf("%d\n",*ptr);

}




문제2


#include <stdio.h>

int main() {

int arr[10] = { 3,1,4,1,5,9,2,6,5,3 };

for (int i = 3; i < 7;i++) {

printf("%d, %d\n",arr+i,*(arr+i));

}

}




=============================================================================================================================






문제1 정답


#include <stdio.h> 

int main() {

int a = 30;  //a값 10

int b = 20;  //b값 10

int *ptr;    //ptr포인터 선언

ptr = &a;   // ptr에 a의주소 넣음

*ptr = 30;    // ptr 값 (a값)30변경 

ptr = &b;   // ptr에 b주소 덮어 씌움

*ptr = 10;  //ptr 값 (b값) 10으로 변경


printf("%d\n",a); //변경된 a의 값 30

printf("%d\n",b); //변경된 b의값 10

printf("%d\n",*ptr); //변경된b의 주소를 가지고 있는 *ptr 출력 10

}




문제2 정답


#include <stdio.h>

int main() {

int arr[10] = { 3,1,4,1,5,9,2,6,5,3 }; //배열 선언

for (int i = 3; i < 7;i++) {            //3부터 6까지 반복

printf("%d, %d\n",arr+i,*(arr+i)); //배열은 인자가 0번째 부터 들어가기 때문에 4번째인 1을 시작으로 5,9,2 의 주소를 순차적으로 출력 // 1,5,9,2 출력 

}

}

댓글목록

등록된 댓글이 없습니다.