몽상실현개발주의

[따배씨] 11.1 문자열을 정의하는 방법들 본문

Language/C

[따배씨] 11.1 문자열을 정의하는 방법들

migrationArc 2021. 6. 9. 17:12

[따배씨] 11.1 문자열을 정의하는 방법들

따배씨 - 따라하며 배우는 C언어

11강 문자열 함수들

11.1 문자열 Strings 을 정의하는 방법들

#include <stdio.h>

#define MESSAGE "A symbolic string contant"
#define MAXLENGTH 81

int main(){
    char words[MAXLENGTH] = "A string in an array";
    const char* pt1 = "A pointer to a string.";

    puts("Puts() adds a newline at the end:"); // puts() add \n at the end
    puts(MESSAGE);
    // A symbolic string contant
    puts(words);
    // A string in an array
    puts(pt1);
    // A pointer to a string.
    words[3] = 'p';
    puts(words);
    // A spring in an array
    
    //pt1[8] = 'A';
    
    return 0;
}
pt1[8] = 'A'; // Error
  • pt1 을 const 로 선언하였기 때문에, 값 변경 불가
  • const 없이 선언 하더라도 Error 발생, 읽기 전용 메모리에 저장된 데이터를 바꾸려고 시도하였기 때문
    • 문자열 리터럴은 프로그램으 일부이기 때문에 일기 전용 메모리에 저장
    • 운영체제가 중단 시킴

 

 

 

#include <stdio.h>

int main(){
    char greeting[50] = "Hello, and""How are"" you"
    " today!";
    
    puts(greeting);
    // Hello, andHow are you today!
    
    return 0;
}
char greeting[50] = "Hello, and""How are"" you"
      " today!";
  • 문자열을 이용하여 따로 포현해도, 하나의 String 이 됨

 

 

 

#include <stdio.h>

int main(){
    printf("%s %p %c\n", "We", "are", *"excellent programmers");
    // We 0x100003f8f e
    return 0;
}
printf("%p\n", "are");
// 0x100003f8f
  • String 도 배열이기 때문에, %p로 주소값을 받아서 출력 가능
printf("%c\n", *"excellent programmers");
// e
  • "excellent programmers" 의 첫번째 주소 공간의 값이 출력됨

 

 

 

#include <stdio.h>

#define MESSAGE "A symbolic string contant"
#define MAXLENGTH 81

int main(){
    const char m1[15] = "Love you!";
    
    for (int i = 0; i < 15; ++i){
        printf("%d ", (int)m1[i]);
    }
  	// 76 111 118 101 32 121 111 117 33 0 0 0 0 0 0 
    return 0;
}
  • String의 초기화 하지 않은 나머지 공간을 Compiler 가 자동으로 NULL 로 초기화
const char m1[15] = "Love you!";
const char m1[15] = {'L', 'o', 'v', 'e', ' ', 'y', 'o', 'u', '!', '\0'};
  • 같은 초기화 방법

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments