C언어 문자열 거꾸로

조회수 1544회
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *change(char *m) {
    int len = strlen(m);
    char *change = (char *)malloc(len + 1);
    for (int i = len - 1; i >= 0; i--) {
        change[len - 1 - i] = m[i];
    }
    change[len] = 0;
    return change;
}
int main() {
    char m[100];
    printf("영문자 입력 : ");
    gets_s(m, 100);
    printf("변환된 문자 : %s\n", change(m));   
}

이 문자열을 거꾸로 하는 코드에서

char *change(char *m)

이 부분에 change랑 m앞에 *이 붙는 이유가 궁금합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 딱 답만 적으면 문자 포인터로써 "문자열의 시작 메모리 주소"값입니다.

    c언어에서 "문자열" 이라는 타입은 없습니다.

    그냥 문자 1개의 데이터 타입이 char 입니다.

    문자열이라는 것은 문자들이 일렬로 늘어선 상태 즉 문자들의 배열이 문자열인겁니다.

    char m[100] 표현이 문자 100개가 들어가는 배열 즉 문자열의 선언입니다.

    그러면 char * 은 무엇인가...문자의 포인터로 보통 문자열의 시작 메모리주소값을 갖습니다.

    즉 파라미터로 문자 배열(char m[100])을 넘겨주고 그 주소를 다시 받는겁니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)