문자열 포인터 출력(16:49)
포인터에 의한 문자열 출력 경우들을 몇가지 정리해봤는데 정확히 이해하고 있는 건지 모르겠습니다. 선생님 한번 봐주세요
#include <stdio.h>
int main() {
char *s="Hello world!";//포인트 변수 s 선언, 문자열 Hello world! 저장
printf("%s\n", s); // 포인트 변수 s호출, 문자열의 첫번째 주소를 가져온다. %s에 의해 '문자열'로 취급되서, 전체 출력한다.
//printf("%c\n", s);//이건 에러가 나는데 문자열을 문자로 출력하려고 해서?? 잘 모르겠습니다.
printf("%c\n", *s); // 포인트 변수 s호출, 문자열의 첫번째 주소가 갖는 값을 가져온다. %c에의해 '문자'로 취급되서, H를 출력한다.
printf("%c\n", *s+1); //포인트 변수 s호출, 문자열의 첫번째 주소가 갖는 값을 가져온다. 우선 H가 호출되고 1을 더한 I가 출력
printf("%c\n", *(s+1)); // 포인트 변수 s에 1이 더해진 문자열의 두번째 주소가 갖는 값을 가져온다. e를 출력한다.
return 0;
}
답변 2
0
\0을 만나기 전까지 모두 출력 - 정상적으로 출력됩니다.
%c는 단일 문자를 출력해야하는데, 문자열의 주소(s)를 주고 있습니다. 그래서 정상적으로 출력되지 않습니다.
*s를 줬다면 첫번째 문자 값을 주니까 H가 출력됩니다.
*s는'H'이고, 여기에 정수 1을 더하면'H'의 ASCII 값(72)에 1을 더해 73이 되어'I'가 됩니다.s+1은 문자열의 두 번째 문자 주소를 의미하며,*(s+1)은 그 주소에 저장된 문자를 가져옵니다. 두 번째 문자는'e'입니다.
이렇게 해석하시면 됩니다.
그래서 전체 출력값
Hello world!
(안 나오거나 이상한 값)
H
I
e
이렇게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 이준우님.
질문하신 C 언어에서 포인터에 의한 문자열 출력 개념에 대해 설명해드리겠습니다. 코드 각 부분의 의미를 정리해볼게요.
printf("%s\n", s);- 이 줄은 문자열을
%s형식을 사용하여 출력합니다. 여기서s는 문자열 “Hello world!“의 첫 번째 문자를 가리키는 포인터이므로,printf함수는 문자열 전체를 출력합니다.
- 이 줄은 문자열을
printf("%c\n", s);- 이 줄에서는
%c형식이 사용되었기 때문에 컴파일러가s를 문자로 해석하려고 시도합니다. 하지만s는 문자열의 시작 주소를 담고 있는 포인터이기 때문에, 정확히 말하면 주소가 출력되게 됩니다. 원래 의도대로라면*s로 첫 번째 문자인 ‘H’를 출력해야 합니다.
- 이 줄에서는
printf("%c\n", *s);*s는 포인터s가 가리키는 주소의 값을 가져오게 됩니다. 즉, 문자열 “Hello world!“의 첫 번째 문자 ‘H’ 값을 가져와 출력합니다.
printf("%c\n", *s+1);*s+1은 첫 번째 문자 ‘H’의 ASCII 값에 1을 더한 새로운 문자 ‘I’를 출력합니다.
printf("%c\n", *(s+1));- 이 표현은
s포인터를 한 칸(즉, 한 문자) 앞으로 이동시켜, 두 번째 문자 ‘e’의 값을 가져와 출력합니다.
- 이 표현은
이와 관련하여 더욱 이해를 도와줄 수 있는 기존 답변을 링크해드립니다:
위에 제공한 링크에서, 포인터와 문자열의 상호작용에 대해 더 깊이 이해할 수 있는 답변과 예제를 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년2회 실기기출은 언제쯤...
0
29
2
이론 공부법 요약본 버전 업데이트 문의
0
28
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
56
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
83
1
이론 보면서 질문이 있습니다.
0
79
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
90
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
149
2
262 정처기 실기 C언어코딩
0
48
1
정보처리기사 262 실기 Hash(해시) 질문
0
82
2
static 변수 질문입니다.
0
63
2
파이썬 4강 질문입니다.
0
72
2
모의고사 1회 3번문제
0
92
3
41강 30:10
0
68
2
이론 공부법 질문 있습니다.
0
92
2
부모의 생성자 관련 질문
0
68
2
시험지 문제에 필기해도 되나요?
0
91
3
41강 11:23
0
60
2
4강파이썬 질문입니다
0
57
2
try-catch 핸들러명
0
68
2
36강 3:48
0
66
2
35강 18:27
0
68
2
자식 코드 내 super() 생략
0
60
2
출력질문
0
78
2





