Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[164] Re:Re:무식한 질문이지만... 그래도 알고자 하는 맘에... 배열 선언 할 때 말이죠...
태즈 [taz1000] 4580 읽음    2001-12-22 12:15
상황에 맞게 딱 필요한 크기만큼 배열의 크기를 잡으려고 하시는거죠.. ?
대부분의 분들이 초보시절 부딪혔던 문제일겁니다. ㅎㅎ. 저또한. (여전히..)

이럴때에는 new 함수를 이용하여서 메모리를 할당받아야 합니다.

int *leejin ;   // 어떤 주소를 기억하기 위한 변수.

leejin = new int(i) ;  // int 형의 배열을 i개만큼 만들고, leejin에 그것의 첫번째 인자의 주소를 저장.

이렇게 하면 의도하시는

int leejin[i] ;      <-- 에러가 나는 코드이지만, 의미전달에는 가장 적당할 듯 하여서..

를 구현하실수 있습니다.



간단하게 테스트 해보았습니다.

        int i = 100 ;
        int *leejin ;
        int result ;

        leejin = new int(i) ;

        leejin[0] = 100 ;
        leejin[5] = 20 ;


        result = leejin[5] * leejin[0]  ;

더 자세한 설명없어도, 위의 코드를 천천히 보시면 쉽게 응용(??) 가능할 거라고 생각합니다.

그리고 중간에 사용된  *  포인터와 관련된 자세한 내용은 아직은 너무 부담가지시지 마시고요..
일단 이렇게 쓰는구나.. 하시고, 차츰 배워나가시면 됩니다.

수고하십시요...

어떠한 질문이라도 부담~~없이 올리십시요.. ㅎㅎ.
                 
김진수 님이 쓰신 글 :
: 저두 c++ 공부하고 있는데
: 위와 같은 경우는 int leejin[ 2 ]; 라고 선언 하시면 컴파일러가 컴파일 할때
: integer 값을 가지는 변수 leejin 의 필요한 메모리 할당을 해줍니다.
:
: 하지만 int leejin[ x ]; 라고 선언을 하시면 컴파일러는 메모리 할당에 실패를 해서
: 에러를 내보내는게 아닌가 싶습니다. 도대체 얼마를 할당해야 하는지 모르는 거죠.
:
: 이런 경우 c++  STL 의 벡터를 이용하시면 어떨까요. vector는 표준 <vector.h> 헤더 파일에
: 정의 되어 있는 클래스 템플릿입니다.
: 필요에 따라 자동적으로 커지거나 작아지는 컨테이너 객체라고 하는 군요..
:
: 이런 C 로 물어 보신거라면 답변이 안되겟네여
:
:
: kongbw 님이 쓰신 글 :
: : 다른게 아니구요
: :
: : 일단 풀어야 할 문제가 있어서 그걸 풀긴 풀었는데
: : 궁금한게 있어서 그럽니다
: :
: :
: : 문제는
: :
: :
: : 10진수를 입력하면 2진수를 출력하는 프로그램을 작성하시오
: : 
: :  숫자를 입력하시오 >> 12
: :    2진수 : 1100
: :
: :
: : 이거든요
: :
: : 배열에 2로 나눈 수 나머지를 차례로 넣고
: : 거꾸로 출력을 시키는 겁니다
: :
: :
: :
: :
: : #include <stdio.h>
: :
: : void main()
: : {
: : int N ;            // 입력할 10진 수
: : int k;            // 입력할 수가 몇 번 나눠지는가 알기위한 수
: : int i = 0 ;        // 10진수가 2진수로 몇자리 나오는지 저장되는 변수
: : int j ;            // j는 2진수 출력에 쓰이는 반복문 초기값
: :
: :
: :     printf("10진수를 입력하세요 : ") ;
: :     scanf("%d", &N) ;
: :
: :
: : k = N ;            // N을 직접 쓰지 못하므로 따로 k에 N을 대입 ;
: :
: :         while ( k != 0 )        // 입력한 10진수가 2진수로
: :         {                        // 몇자리가 나오는지 계산
: :         k = k / 2 ;
: :         i = i + 1 ;
: :         }
: :
: :
: : int leejin[100] ;        // 2진수를 입력할 배열 선언
: :                         // 이걸 쓸려고 한게 아니라
: :                         // 바로 밑에껄 쓸려고 했습니다
: :
: :
: : /*     ********************************************************
: :  int leejin[i] ;    --------->>>> 바로 문제를 일으키는 부분...
: : */     ********************************************************
: :
: :
: :
: :
: :
: : k = N ;                // 다시 k에 초기에 입력한 10진수를 대입하여 씀
: :
: :
: :         for ( j = 0 ; j < i ; j++ )
: :         {
: :         leejin[j] = k % 2 ; // 배열에 2진수를 구해서 입력함, 순서는 거꾸로임.
: :
: :         k = k / 2 ;
: :         }
: :
: :
: :
: :     printf("\n이진수 : ") ;
: :
: :
: :         for (j = i-1 ; j >= 0  ; j-- )
: :         {
: :         printf("%d", leejin[j]) ;
: :         }
: :
: :     printf("\n\n\n\n") ;
: :
: :
: : }
: :
: :
: :
: :
: : 코딩도 개판이고... 주석도 개판인데... 초보려니 하고 이해해 주세요
: :
: :
: : 일단 풀긴 풀었거든요
: :
: :
: : 그런데 원래 위에 별표를 친걸로 배열 선언을 할려고 했습니다
: :
: : 2진수 자리에 꼭 알맞게 하기 위해
: :
: :
: : 배열 선언에 변수를 넣었거든요
: :
: : for 문을 쓸 때도 배열문 안에 변수를 넣어서 썼던게 생각이 나서
: :
: : 배열을 선언할 때도 충분히 쓸 수 있을 거라고 그렇게 했는데
: :
: : 왠걸?
: :
: : 컴파일 하는데 자랑스럽게도 애러가 뜨더군요
: :
: : 제가 생각하기에... 충~~분히 될 것 같았는데...  쩝...
: :
: : 그래서 할 수 없이 100개 짜리 배열을 선언해서
: :
: : 자리를 충분히 만들 수 밖에 없었습니다
: :
: :
: :
: : 원래 배열을 선언할 때 변수를 쓸 수 없는건가요?
: :
: : 제가 보기에는 써도 될 것 같은데...
: :
: :
: : 거기에 대해 좀 자세한... 이런 저런 이야기 좀 부탁 드리겠습니다
: :
: : 원래 배열 선언문 안에 변수를 쓸 수 없는지
: :
: :
: : 어떠한 큰... 치명적인 문제 때문에 그렇게 만든건지...
: :
: : 이런 저런 자세한 설명 부탁드립니다
: :
: : 제 머리로는 도저히 이해가  T_T
: :
: :
: :
: : 흐... 여기 질문란에 처음 올리는 글이내요
: :
: : 아무튼 여러 고수님들께서 백옥, 주옥 같은 지도 부탁드립니다!!!
: :
: :
: :
: :
: :
: : 뒷말 : 고수님께서 무심코 던진 실마리 하나가
: :        방황하는 왕하수한테는 굵은 동앗줄이 될 수 있습니다    T_T

+ -

관련 글 리스트
159 무식한 질문이지만... 그래도 알고자 하는 맘에... 배열 선언 할 때 말이죠... kongbw 4517 2001/12/22
161     Re:무식한 질문이지만... 그래도 알고자 하는 맘에... 배열 선언 할 때 말이죠... 김진수 4617 2001/12/22
166         답변 감사합니다 ^_^ kongbw 5678 2001/12/22
164         Re:Re:무식한 질문이지만... 그래도 알고자 하는 맘에... 배열 선언 할 때 말이죠... 태즈 4580 2001/12/22
167             답변 감사합니다 그런 방법이 있었군요 kongbw 3432 2001/12/22
179                 Re:답변 감사합니다 그런 방법이 있었군요 이경문 3581 2001/12/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.