'C언어'에 해당되는 글 7건

  1. 2013.07.11 Console User Interface ( CUI ) - 1 (1)
  2. 2013.07.11 목차 (2)
  3. 2013.07.11 Funny C ( 게임을 만들면서 C언어 공부하기 ) - 서문 (2)
  4. 2011.10.09 C언어로 구현한 빙고게임 (5)
  5. 2011.06.04 C언어로 구현한 사다리 게임 ( Ladder Game ) (7)
  6. 2010.08.05 C언어 문제 - 해결방안 (4)
  7. 2010.08.04 C언어 문제 (2)

Naver Perl Community & Study Cafe


2013.07.11 22:31

Console User Interface ( CUI ) - 1

Console User Interface ( CUI ) - 1


검은 바탕에 글씨로만 적혀진 똑같은 콘솔 화면을 보게 때마다

너무 식상 하다는 생각이 드시지 않나요?

 

이런 따분한 콘솔 작업을 벗어나

알록달록한 색으로 텍스트와 배경이 바뀌고

좌우로 휙휙 날아다니는 애니메이션을 넣을 있다면

만드는 사람도 즐겁고 사용자도 즐거운 프로그램이 있지 않을까요?

 

거기다 그렇게 만들 있는 방법이 아주 아주 쉽다면?

호기심을 자극하는 이야기가 합니다 ㅋㅋ

 

Console 에서 정말 괜찮은 프로그램을 만들어 있을까 의문이 가시겠지만…

 

충분히 실용적인 UI 만들 있고,

이미 CUI 통해 제작된 훌륭한 프로그램이 현재에도 꾸준히 실무에서 사용되고 있습니다 :)

윈도우 Edit Vim 같은 Edit 프로그램들도 Console 작성 되었다는 사실!



 < Windows Edit >


 < Vim >


위와 같은 UI 만드는 방법은 제가 알려드릴 가지 기술만 있으면 쉽게 만들 있으며,

조금만 응용한다면 뛰어나고 세련된 작품도 완성할 있습니다.

 

그럼 배워봅시다!

 

CUI 구현하기 위해서는 아래 가지에 대해서만 익혀두시면 됩니다.


  1. 콘솔창의 색상이나 크기를 변경하는 방법
  2. 내가 원하는 좌표로 이동하는 방법

 

콘솔창의 색상을 변경하는 방법은 2가지 입니다.

첫번째로 Command 명령어인 Color 명령을 이용해서 바꾸는 방법입니다.

먼저 Color 명령어가 먼지 아래와 같이 /? 옵션을 통해서 확인해 보죠!



도움말에서 확인할 있듯이 16진수 2자리로 Color 지정하며

앞자리는 배경색 뒷자리는 글자색 입니다.


앞자리가 비어 있으면 글자색만 지정이 되게 됩니다.


색은 16색이며, 색을 조합하여 256개의 조합을 만들어 있는 것이죠.

( 256개의 조합이지만 글자색과 배경색이 같을 수가 없습니다.

만약 같게 된다면 화면에 아무것도 안보이게 되겠죠?? 그래서 240개의 조합입니다. )

 

Color 명령어 뒤에 이리저리 숫자와 문자를 넣어 명령어를 보세요


> Color 4

> Color 2

> Color 20

> Color FC


마지막 FC 보면 배경색은 F ( 밝은 흰색 ) 글자색은 C( 연한 빨간색 ) 아래와 같이 색이 바뀌게 됩니다.



그러면 이런 명령어를 C언어에서 사용하는 방법은!!

System 함수를 사용하시면 되겠죠?


최종적인 코드는 아래와 같습니다.



이렇게 쉽게 배경색과 글자색을 한번에 바꾸는게 가능하죠 :)


한번 해보시기 바랍니다!

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 7 Comment 1
2013.07.11 22:30

목차

목 차

* 목차는 추가 및 변경 될 수 있습니다.




게임제작에 필요한 배경지식

: 난수 사용 및 Consol UI 사용 방법

* 난수의 이해 및 생성 방법

* Console UI 사용법 배우기 1

* Console UI 사용법 배우기 2


- 초급게임

: 변수 사용 및 조건문 및 반복문을 이해한 단계, 간단한 알고리즘 

* UP & DOWN 게임

* 야구게임

* Dice 게임

* 경마장 게임


- 중급게임


: 배열의 이해, 함수 사용 가능


* 사다리 게임


* 빙고게임


* 달팽이 배열 화면 지우기


※ 고급게임 제작을 위한 키 입력 배우기

 


- 고급게임


: 구조체 및 포인터 사용 가능, 재귀함수 등 알고리즘 구현


* 숫자 퍼즐


* PUSH PUSH ( 소코반 )


* 지뢰찾기 ( 3번에 걸쳐 연재 계획 )


* 글자 피하기 게임 ( 실시간 슈팅 게임 )




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2
2013.07.11 22:28

Funny C ( 게임을 만들면서 C언어 공부하기 ) - 서문

Funny C



Software 분야가 갈수록 중요해지고 있는 시대에서


전공자 뿐만이 아닌 비전공자들도 프로그래밍을 배울 정도로 붐이 일어 났습니다.


 

그런 사람들이 프로그래밍을 배우기 위하여 


첫 언어로  선택하는 것이 대부분 C언어 입니다.


 

관심이 있어 배우려고 책을 사거나 학원을 수강했다 하더라도,


문법 몇번 배워보고 어렵다라는 생각을 하게되어


떠나게 되는것이 C언어의 특징이라고 알려져 있죠.



 

실무자들이 가장 중요한 언어 중 하나이고 


사용하기 좋다라고 평가받는 C언어가


이렇듯 초심자에게 다루기가 어려우니


C언어 이외의 다른 분야 자체에 엄두도 못내고 


업계를 떠나는 사람들도 많이 봤습니다.

 


정말 이렇게 프로그래밍이라는 분야가 어려운 걸까요?


재능있는 사람들만 프로그래밍을 잘 할 수 있을까요?


프로그래밍을 재미있게 배울 수는 없을까요?

 


저는 이 부분에 대해서 많은 고민을 하였고 결론적으로


어렵게보다 쉽게, 문법을 익히는 예제보다는 재미있고 흥미로운 예제를 통해


언어를 배우는 것이 매우 효과적인 교육이 된다는 것을 강의를 통해 확인하였습니다.


 

C언어를 처음 배우거나 C언어를 배웠음에도 아직 잘 모르겠다는 분들에게


많은 도움이 되길 바라며 이 글을 씁니다.



내가 알고 있는 C언어가, 내가 배우는 C언어가 재미 있을 수 있다는 것을 알리고 싶습니다.


그럼 시작해 보죠~

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2
2011.10.09 22:31

C언어로 구현한 빙고게임


어릴때 친구들과 열심히 했던 빙고게임을 C언어로 만들어 봤습니다.


국민적인 게임이라 빙고게임을 대부분 알고 계실 것이라 생각됩니다.

하지만 빙고게임의 방식이 각 나라나 지역에 따라 다르기 때문에
저는 제가 알고 있는 빙고 게임대로 만들어 보도록 하겠습니다 ^^


빙고게임을 만들기 위해서는 크게 3가지를 주의해서 만드시면 됩니다.


1. 숫자 섞기

5x5 판에서 1 ~ 25까지 순서대로만 숫자를 나열하면 재미가 없으니
두 숫자를 뽑아서 서로 바꿔주는 식으로 숫자를 섞으면 됩니다.


위와 같이 랜덤으로 좌표를 2개를 설정 한다음 두 값을 바꿔주는 형태로

사용자가 원하는 만큼 또는 적절한 양만큼 섞어주면 랜덤된 빙고 판이 완성되게 됩니다.


2. 숫자 설정


선택한 숫자를 임의의 숫자( 0 또는 다른 수) 로 바꿔줌으로써
출력도 다른 문자로 출력 되게 합니다.

이것은 내가 숫자를 부른 부분에 대해서 색칠을 하는 효과와 동일 합니다.

이미 숫자가 설정되어 있다면 다시 설정하게 하는 부분도 예외사항으로 잘 설정해야 합니다.



3. 빙고 개수 체크



빙고 개수 체크는 총 4가지 입니다.
행,열, 각 대각선으로 빙고 개수를 체크하면 됩니다.
( 2중 for 문 단 한번으로 이 빙고 개수를 모두 체크 할 수 있습니다.)

5x5 빙고판일 경우 5번이 먼저 Check 될 경우에
게임을 끝나게 설정 합니다.


아래는 컴퓨터와 플레이어가 직접 번호를 주고받으며
빙고게임을 할 수 있도록 만들어 보았습니다.

즐겜 하세요~~


원문 링크 : http://pastebin.com/NwmhyPtC

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <windows.h>
  5.  
  6. #define MAX 5
  7. #define WHITE 15
  8. #define YELLOW 14
  9.  
  10.  
  11. void textcolor(int color_number); // 텍스트 칼라 출력
  12. void gotoxy(int x, int y); // 좌표 이동
  13. int baserand(int x, int y); // 랜덤 범위 지정
  14.  
  15. // 초기값 설정
  16. void InitCount(int Player[MAX][MAX] , int Com[MAX][MAX]);
  17.  
  18. // MAP 설정
  19. void MixMAP(int Player[MAX][MAX]);
  20. int SearchMAP(int Player[MAX][MAX] ,int Num);
  21. void printMAP(int Player[MAX][MAX]);
  22. int CheckMAP(int Player[MAX][MAX]);
  23.  
  24. // 승리조건
  25. void Winner(int flag , int Player[MAX][MAX],int Com[MAX][MAX]);
  26.  
  27.  
  28.  
  29.  
  30. int main(void){
  31.  
  32.         int Player[MAX][MAX];
  33.         int Com[MAX][MAX];
  34.         int playerChk,comChk;
  35.         int Num;       
  36.  
  37.         InitCount(Player,Com);
  38.        
  39.         MixMAP(Player);
  40.  
  41.         while(1){
  42.                 gotoxy(0,0);
  43.  
  44.                 // 컴퓨터들 출력
  45.                 textcolor(WHITE);
  46.                 printf(" ====== Player ====== \n");
  47.                 printMAP(Player);
  48.                 textcolor(WHITE);
  49.                 printf(" ===== Computer ===== \n");
  50.                 printMAP(Com);         
  51.  
  52.                 textcolor(WHITE);
  53.                 printf(" > ");
  54.                 scanf("%d",&Num);
  55.  
  56.                 if( SearchMAP(Player,Num) == 0){
  57.                         printf("잘못입력하셨습니다. \n");                     
  58.                         system("pause");
  59.                         system("cls");
  60.                         continue;
  61.                 }
  62.  
  63.                 SearchMAP(Com,Num);
  64.  
  65.                 // 컴퓨터 턴
  66.                 while( 1 ){
  67.                         Num = baserand(1,MAX*MAX);
  68.                         if(SearchMAP(Com, Num) ==1 ){
  69.                                 SearchMAP(Player, Num);
  70.                                 break;
  71.                         }
  72.                 }
  73.  
  74.                 playerChk = CheckMAP(Player);
  75.                 comChk = CheckMAP(Com);
  76.  
  77.                 printf("Player Check = %d \n",playerChk);
  78.                 printf("Com Check = %d \n",comChk);
  79.  
  80.                 if(playerChk >= MAX && comChk >= MAX){
  81.                         if( playerChk > comChk){
  82.                                 Winner(0,Player,Com); // 내가 이겼을 때
  83.                         }else if( playerChk < comChk) {
  84.                                 Winner(1,Player,Com); // 내가 졌을 때
  85.                         }else{
  86.                                 Winner(2,Player,Com); // 배겼을 때
  87.                         }
  88.                 }else  if(playerChk >= MAX){
  89.                         Winner(0,Player,Com); // 내가 이겼을 때
  90.                 }else  if(comChk >= MAX){
  91.                         Winner(1,Player,Com); // 내가 졌을 때
  92.                 }
  93.  
  94.                 system("pause");
  95.                 system("cls");
  96.         }
  97.         return 0;
  98. }
  99.  
  100. // 텍스트 칼라 출력
  101. void textcolor(int color_number)
  102. {
  103.  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color_number);
  104. };
  105. // 좌표 이동
  106. void gotoxy(int x, int y)
  107. {
  108.      COORD Cur;
  109.      Cur.X=x;
  110.      Cur.Y=y;
  111.      SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
  112. }
  113. // 랜덤 범위 지정
  114. int baserand(int x, int y){
  115.  
  116.         static int z = 0;
  117.         int tmp;
  118.         if(z==0){
  119.                 srand((int)time(NULL));
  120.                 rand();rand();rand();rand();
  121.                 srand(rand());
  122.                 z=1;
  123.         }
  124.  
  125.         tmp = rand()%(y-x+1)+x;
  126.         return tmp;
  127. }
  128.  
  129. void printMAP(int Player[MAX][MAX]){
  130.         int i,j;
  131.         for(i=0;i<MAX;i++){
  132.                 for(j=0;j<MAX;j++){
  133.                         if(Player[i][j] == 0){
  134.                                 textcolor(YELLOW);
  135.                                 printf("%4s","♥");
  136.  
  137.                         }else{
  138.                                 textcolor(WHITE);
  139.                                 printf("%4d",Player[i][j]);
  140.                         }
  141.                 }
  142.                 printf("\n");
  143.         }
  144. }
  145.  
  146.  
  147. void MixMAP(int Player[MAX][MAX]){
  148.  
  149.         int i;
  150.         int x1,y1;
  151.         int x2,y2;
  152.         int tmp;
  153.  
  154.         printMAP(Player);
  155.  
  156.         for(i=0;i< 10*MAX ;i++){
  157.  
  158.                 x1 = baserand(0,MAX-1);
  159.                 y1 = baserand(0,MAX-1);
  160.  
  161.                 x2 = baserand(0,MAX-1);
  162.                 y2 = baserand(0,MAX-1);
  163.  
  164.                 // 두 값을 서로 바꾸는 코드
  165.                 tmp = Player[x1][y1];
  166.                 Player[x1][y1] = Player[x2][y2];
  167.                 Player[x2][y2] = tmp;
  168.  
  169.                 gotoxy(0,0);
  170.                 printMAP(Player);              
  171.        
  172.                 Sleep(10);
  173.         }
  174.         system("pause");
  175.         system("cls");
  176.        
  177. }
  178.  
  179. int SearchMAP(int Player[MAX][MAX] ,int Num){
  180.  
  181.         int i,j;
  182.         int flag = 0;
  183.  
  184.         for(i=0;i<MAX;i++){
  185.                 for(j=0;j<MAX;j++){
  186.                         if(Player[i][j] == Num){
  187.                                 flag = 1;
  188.                                 Player[i][j] = 0;
  189.                         }
  190.                 }
  191.         }
  192.  
  193.         return flag;
  194. }
  195.  
  196. int CheckMAP(int Player[MAX][MAX]){
  197.         int i,j;
  198.         int rowsFlag = 0;
  199.         int columnFlag = 0;
  200.         int crossleftFlag = 0;
  201.         int crossrightFlag = 0;
  202.         int check = 0;         
  203.  
  204.         for(i=0;i<MAX;i++){
  205.                 rowsFlag = 0;
  206.                 columnFlag = 0;
  207.  
  208.                 for(j=0;j<MAX;j++){
  209.                         if(Player[i][j] == 0){
  210.                                 rowsFlag++;
  211.                         }
  212.                         if(Player[j][i] == 0){
  213.                                 columnFlag++;
  214.                         }
  215.                 }
  216.                 // 가로체크
  217.                 if(rowsFlag == MAX){
  218.                         check++;
  219.                 }
  220.                 // 세로체크
  221.                 if(columnFlag == MAX){
  222.                         check++;
  223.                 }
  224.                 // 대각선 왼쪽에서 오른쪽
  225.                 if(Player[i][i] == 0){
  226.                         crossleftFlag++;
  227.                 }
  228.                 // 대각선 오른쪽에서 왼쪽
  229.                 if(Player[MAX-1-i][i] == 0){
  230.                         crossrightFlag++;
  231.                 }
  232.         }
  233.  
  234.         if(crossleftFlag == MAX){
  235.                 check++;
  236.         }
  237.  
  238.         if(crossrightFlag == MAX){
  239.                 check++;
  240.         }
  241.  
  242.         return check;
  243. }
  244.  
  245. void Winner(int flag , int Player[MAX][MAX],int Com[MAX][MAX]){
  246.         gotoxy(0,0);
  247.         textcolor(WHITE);
  248.         printf(" ====== Player ====== \n");
  249.         printMAP(Player);
  250.         textcolor(WHITE);
  251.         printf(" ===== Computer ===== \n");
  252.         printMAP(Com);         
  253.         gotoxy(0,MAX*2+5);
  254.         switch(flag){
  255.                 case 0:
  256.                         printf("당신이 이겼습니다. \n");
  257.                         break;
  258.                 case 1:
  259.                         printf("당신이 졌습니다. \n");
  260.                         break;
  261.                 case 2:
  262.                         printf("비겼습니다. \n");
  263.                         break;
  264.         }
  265.         exit(0);
  266.  
  267. }
  268.  
  269. void InitCount(int Player[MAX][MAX] , int Com[MAX][MAX]){
  270.  
  271.         int i,j;
  272.         int count =1 ;
  273.         for(i=0;i<MAX;i++){
  274.                 for(j=0;j<MAX;j++){
  275.                         Player[i][j] = count;
  276.                         Com[i][j] = count;
  277.                         count++;
  278.                 }
  279.         }
  280. }
  281.  


앞으로 잔잔한 게임들을 소스공개 및 설명과 함께 올리도록 하겠습니다.
 
 
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 7 Comment 5
2011.06.04 08:08

C언어로 구현한 사다리 게임 ( Ladder Game )


날씨 좋네요~ 주말인데다 아침에 일찍 일어나다보니...

심심해서 적어봅니다 ^^;



평소에 친구들과 함께 사다리 게임을 많이 하시죠??



이 사다리 게임을 직접 C언어로 구현을 하는 예제를 준비했습니다 ^^


1. 사다리 구성하기

사다리를 그리기 위해서는 먼저 아스키 코드를 사용해야 합니다. ( 이미지 대용이라고 생각하세요~ )
 

int i;
for(i=0;i<=25;i++)
{
printf("%d : %c \n",i,i);
}



간단히 위의 예제에서 아스키 코드를 확인해 보면 
사다리 그리기에 필요한 아스키 코드를 알 수 있습니다.



16번 같은 경우에도 쓰일 수 있으나
왠만하면 같은 곳에 양옆으로 줄 그어 주는것은 피하는것이 좋습니다.

2. 랜덤으로 사다리 그리기

사다리를 그려줄 때는 한번에 다 그어도 상관이 없지만,

세로줄을 먼저 그어준 후에 가로줄을 긋는 것이 좋습니다.

예를들어 가로줄을 그을 때는 랜덤으로 가로줄을 그어야 하며


이때 간단한 문제가 생기는데

│━━━│

이렇게 연결선 처리가 되지 않는 경우가 있을 수 있으니..

┣━━━┫

이런식으로 깔끔하게 처리를 해 줘야 합니다.

 

완성 후 아래와 같이 사다리를 그릴 수 있습니다.
 

 

3. 사다리 타기

사다리를 다 그린 후 선택된 번호로 부터 

사다리를 타고 내려가는 애니메이션을 구현합니다.

이 부분은 y 축을 한칸씩 밑으로 내리면서

좌표를 이동시키며 내려가면 됩니다.

만약 가로선을 만났을 경우에는 x 축 좌표를 이동시키면서 사다리를 타 보세요 :)
 




참 쉽죠? 


sadari.exe

프로그램 첨부합니다 :)


아래는 작성한 소스코드입니다.

원본 : http://pastebin.com/tYUJu8pG



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 7
2010.08.05 02:28

C언어 문제 - 해결방안


어제  C언어에 관련된 문제를 하나 내었는데 

댓글로 답을 풀어주시기보다 트위터나 

네이트온 쪽지로 더 답을 많이 주셨습니다.


1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void){
   int A[]={10,20,30,40,50,60,70};
   double *dp = (double *)A;

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

   return 0;
}


제가 원했던 답은  빨간색으로 표시된 (*dp)++ 만 수정하여

답을 11이 되도록 바꾸는 것이 었는데

많은 분들이 소스 전체를 바꾸셔서 답을 주시더군요 ^^;;



- 풀이

dp 는 더블형 포인터 입니다.

그렇기에 *dp 는 더블형으로 접근한 값을 1을 증가해 줘야 하는데

접근 한 값은 정수기 때문에 데이터 형에 맞지 않게 1이 증가됩니다.

즉 정리하자면

정수형으로 1을 증가해야 하는데 , 실수형으로 1을 증가시킨다는 이야기입니다.

그러므로 포인터로 접근하는 형 변환이 이루어 져야 하기 때문에,

*dp 는   * ( int *) dp  이와같이 코드가 고쳐져야 하며

여기에 ++ 연산자를 넣어줍니다.

그래서 정답은 아래와 같습니다.

(  * ( int *) dp )++; 

해설 : 더블형 포인터인 dp를 정수형으로 주소값에 접근한 뒤 1을 더한다.



- 정리

이 예제에서 또 하나의 재밌는 문제를 만들 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void){
   int A[]={10,20,30,40,50,60,70};
   double *dp = (double *)A;

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

   return 0;
}


*dp++ 이와 같이 연산을 했을 시 어떠한 결과값이 나올까요?

* 보다 ++ 가 연산 순위가 낮기 때문에

후위 연산으로 dp 에 1을 더하고 dp 의 주소값으로 접근이 됩니다.

그러므로 *dp 는 아무 의미가 없어지고 

dp 의 다음 주소값으로 이동되는 연산밖에 없지만,

dp 가 더블형 포인터이고 정수형 배열에 연결 되어 있기 때문에

10을 가르키던 dp 는 30을 가르키게 됩니다.

int 는 4byte , double 는 8 byte 형이기 때문에

더블형 포인터인 dp 는 정수형 배열에서 8byte씩 다음 주소로

이동되기 때문이죠 :)



글을 쓰다보니 말이 어려워진것 같아 조금 아쉽네요.

다음에는 그림을 그리면서 풀이를 한번 적어봐야 겠습니다 ^^;



댓글을 주신 luz_luna,  Raymundo님 감사합니다 :)

------------------------------------------------------------------


luzluna님의 의견입니다.


포스팅을 하면서 대수롭지 않게 생각했던 부분중의 하나가

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

실제값을 접근하는 부분이었습니다.

dp가 더블형 포인터이기 때문에 형변환을 시켜 주소값으로 접근해야 했지만,

형변환을 지켜주지 않아도 정수값을 접근하는데는 

"32비트 운영체제"에서는 문제가 없습니다.


32비트 운영체제를 제외한 다른 운영체제(64비트 또는 16비트)에서는 

전혀 다른 값이 나오죠.. 

그래서 정확하게 정수형으로 접근을 하는 아래 코드를 세심하게 신경써줘야 합니다.


printf("%d \n",*(int *)dp);


저 부분을 형변환을 하지 않아 찝찝했는데 딱 걸렸네요.

좋은 의견 감사합니다 :)



본의 아니게 luzluna님께 죄송합니다. ㅡ_ㅠ

잠을 좀 못 잤... ;; ..;;...
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 4
2010.08.04 01:48

C언어 문제



간단한 C언어 문제를 한번 풀어보세요 ~


1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void){
   int A[]={10,20,30,40,50,60,70};
   double *dp = (double *)A;

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

   return 0;
}

위의 예제는 A라는 정수형 배열과 dp 라는 더블형 포인터 변수가 있습니다.

더블형 포인터 변수에 A배열을 연결 한 뒤

dp의 주소 값으로 접근하여 1을 더하려고 합니다.

정확히 10에 접근하여 1을 더한 11이라는 값을 출력하고 싶습니다.


(*dp)++;

하지만 위의 코드는 원하는 값이 나오지 않는데

이 코드는 왜 11이 되지 않으며, 

이것을 해결하려면 어떻게 코드를 짜야 하는지

댓글 한번 달아주세요~ :)


풀이는 하루 뒤에 하겠습니다~


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2


티스토리 툴바