본문 바로가기

컴퓨터/언어,프로그래밍

C언어 :: 이중포인터 사용법

[질문]
#include <stdio.h>
#include <string.h>


void main(void){

        char **txt_image;
        int i,j,k;

        for(i=0; i<10; i++){
                txt_image[i] = "cfdhufdhdfhufduh";

                printf("%s\n",txt_image[i]);
        }

}

 

저 소스를 gcc 컴파일 하니깐... 애러 없이 정상적으로 나오는데요...

int 변수 선언에서 k를 삭제하면, 결과 나오고, 결과 맨 아래에 세그먼트 오류가 뜨고요..

int 변수 선언에서 j, k를 삭제하면, 결과가 안나오고 세그먼트 오류만 나오네요...

 

이중포인터 사용법을 잘 몰라서 그러는데요... 어떻게 해야할지...ㅜㅜ

답변 부탁드립니다.;;




[답변]

작성자께서는 이중 포인터를 시험해 보시려고 하시는거 같은데요

먼저 char **txt_image 변수에는 포인터의 포인터 형식으로 주소값을 가질수 있습니다.

txt_image 가 가르키는 공간의 주소에는 주소값이 있어야 겠습니다.

그런데 위에서 보시면 txt_image[i] = "cfdhufdhdfhufduh" 라고 작성하셨는데

이것에서 오류가 나게 됩니다.

txt_image가 어느 공간을 지정하는지 주소도 정해지지 않은 상태에서 그 주소에 값을 대입 하고 있습니다 

예를 들어 아들을 낳지도 않은 상태에서 손자를 낳는것입니다.

이중포인터 예제는 다음과 같은 소스가 적당하겠습니다.

#include <stdio.h>
#include <string.h>

void main(void){

        char **txt_image;
        char *text;

txt_image = &text;
*txt_image = "aaaaaaa";
printf("%s",*txt_image);

}


제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...