[질문]
#include <stdio.h>
#include <string.h>
#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>
#include <string.h>
void main(void){
char **txt_image;
char *text;
txt_image = &text;
*txt_image = "aaaaaaa";
printf("%s",*txt_image);
}
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
프로그램 배포하기(Setup 프로그램 만들기) (0) | 2009.03.20 |
---|---|
정적 메모리 할당 vs 동적 메모리 할당 (0) | 2009.03.20 |
C언어 :: C언어 입출력 (1) | 2009.03.17 |
C언어 :: 매크로 (0) | 2009.03.17 |
[C언어] C언어란? (0) | 2009.03.17 |