함수와 재귀함수_포인터를 입력값으로 받는 함수 22:40
안녕하세요 섹션2 C언어 파트에서
함수와 재귀함수 강의 중 질문 있습니다.
포인터를 입력값으로 받는 함수 예시 중에서,
입력값으로 char *str으로 되어있고
이거는 주소값을 저장하는 포인터 변수인데
printf 로 출력할 때 str이 주소값이 아니라 문자열인가요??
%s\n 이라서 그런가요?
myString[] 이 가지고 있는 가장 첫번째 값의 주소가 전달되었다고 하는데 "입력된 문자열 :" 뒷부분에 주소값이 아닌 문자열이 출력되는 이유를 모르겠습니다....ㅠ
주소값이 저장되는 변수인 포인터 변수가 들어오는 거면 저장된 값이 주소값인 거로 이해되는데 출력은 문자열이라서 이 포인트가 이해 안 돼요..
그리고 보다보니 의문이 생겨서 질문 하나 더 있습니다!
main() 실행함수 안에서
char myString[] = "this is String";
하고 printString메서드 호출할 때
printString(myString[]) 이 아닌
printString(myString)
배열 []를 빼주고 이름만 써주는 걸까요?!
같이 설명해 주시면 감사하겠습니다!
답변 1
0
1. %s에 대하여
%s는 문자열 그 자체 이름을 넣으시면 됩니다. %s의 정의를 엄밀하게 말씀드리자면,
"이 곳에 오는 단어가 가리키고 있는 부분부터 '\0' 직전까지의 모든 단어를 순서대로 출력해라" 라는 명령입니다.
%s는 문자열이든 배열이든 첫 부분을 가리키는 주소가 오면 됩니다.
극단적인 예시 제공해드리겠습니다.
아래 4개의 출력문은 정확하게 똑같이 동작합니다.
#include <stdio.h>
int main() {
char str1[] = "Hello, World!";
char str2[] = "Hello, World!";
char *str3 = "Hello, World!";
char *str4 = "Hello, World!";
printf("1: %s\n", &str1[0]);
printf("2: %s\n", str2);
printf("3: %s\n", str3);
// 반복문으로 하나씩 출력
printf("4: ");
for (int i = 0; str4[i] != '\0'; i++) {
printf("%c", str4[i]);
}
printf("\n");
return 0;
}위 예시를 보시면 조금 이해가 쉽지 않을까 싶습니다.
출력문:
1: Hello, World!
2: Hello, World!
3: Hello, World!
4: Hello, World!
2. printString에 대하여
저 상태는 입력값을 char *로 받고 있습니다.
포인터 그 자체 이름이나, 배열 이름이나 똑같이 문자열의 첫 번째 주소를 가리키는 역할을 합니다.
그래서 이름만 넣으면 됩니다.
이해에 도움이 되셨을까요?
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
21
1
조건 반복문 질문: for 문 ?
0
53
1
정처기 26-2회. 9번 질문드립니다!
0
74
1
이론 보면서 질문이 있습니다.
0
68
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
79
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
126
2
262 정처기 실기 C언어코딩
0
41
1
정보처리기사 262 실기 Hash(해시) 질문
0
72
2
static 변수 질문입니다.
0
58
2
파이썬 4강 질문입니다.
0
66
2
모의고사 1회 3번문제
0
83
3
41강 30:10
0
63
2
이론 공부법 질문 있습니다.
0
84
2
부모의 생성자 관련 질문
0
61
2
시험지 문제에 필기해도 되나요?
0
82
3
41강 11:23
0
52
2
4강파이썬 질문입니다
0
50
2
try-catch 핸들러명
0
63
2
36강 3:48
0
62
2
35강 18:27
0
63
2
자식 코드 내 super() 생략
0
58
2
출력질문
0
72
2
31강 4:06
0
63
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
92
3





