Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- BFS
- Python
- 생활코딩
- 인프런
- String
- dfs
- BOJ
- 종만북
- php
- web
- 따라하며 배우는 C언어
- udemy
- greedy
- C
- C언어
- 백준
- Algospot
- Algorithm
- JavaScript
- 따배씨
- Cleancode
- 정수론
- programmers
- 따라하면서 배우는 C언어
- sorting
- graph
- DP
- server
- Math
- BASIC
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 4.3 문자열이 메모리에 저장되는 구조 본문
따배씨 - 따라하며 배우는 C언어
4강 문자열과 형식 맞춘 입출력
4.3 문자열이 메모리에 저장되는 구조
- 문자의 마지막을 표현하기 위해 문자열의 마지막에 '\0' - ASCII Code NULL 이 저장됨
#include <stdio.h>
int main()
{
int a = 1;
int int_arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
printf("%i %i %i\n", int_arr[0], int_arr[1], int_arr[9]);
printf("%i\n", int_arr[10]);
// printf("%i\n", int_arr[10000]);
return 0;
}
printf("%i\n", int_arr[10]);
// 1164378127
- 배열의 범위 (0~9) 를 넘어간 위치이기 때문에, 임의의 숫자가 할당 되어 있음을 확인
printf("%i\n", int_arr[10000]);
// Error 발생: EXC_BAD_ACCESS
- 배열의 범위를 크게 벗어났기 때문에 에러 발생
#include <stdio.h>
int main()
{
char c = 'a';
char str1[10] = "Hello";
char str2[10] = {'H','i'};
printf("%c\n", c);
printf("%s\n", str1);
printf("%s\n", str2);
printf("%hhi %hhi %hhi %hhi %hhi\n", str2[0], str2[1], str2[2], str2[3], str2[4]);
// char str3[10] = "Hello, World"; // array size is not enough
char str3[20] = "Hello, \0World";
printf("%s\n", str3);
// NULL을 만나서, Hello 까지만 printf가 동작
return 0;
}
printf("%hhi %hhi %hhi %hhi %hhi\n", str2[0], str2[1], str2[2], str2[3], str2[4]);
// 72 105 0 0 0
- ASCII 코드 숫자를 출력 하였을 때, 문자열의 빈 공간에 0이 할당되어 있는것을 확인 할 수 있음.
char str3[10] = "Hello, World";
printf("%s\n", str3);
// Hello, Wor\240
- array size is not enough
- NULL character 까지 합쳐 13 글자를 10칸의 메모리에 할당 하게 되어, 10개의 글자 까지만 배열에 저장
- 배열에 NULL이 없기 때문에 printf 함수는 계속 동작하여 NULL 을 만날때까지 메모리에 임의 저장된 값들을 출력
char str3[20] = "Hello, \0World";
printf("%s\n", str3);
// Hello,
- NULL을 만나면 pirntf() 함수가 정지되어 이전까지만 출력 됨
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
http://blog.naver.com/atelierjpro
http://www.inflearn.com/course/following-c
'Language > C' 카테고리의 다른 글
[따배씨] 4.5 기호적 상수와 전처리기 ~ 4.6 명백한 상수들 (0) | 2021.05.13 |
---|---|
[따배씨] 4.4srlen() 함수 (0) | 2021.05.13 |
[따배씨] 4.2 sizeof 연산자 (0) | 2021.05.12 |
[따배씨] 4.1 문자열 입출력 하기 (0) | 2021.05.12 |
[따배씨] 3.13 불리언형 ~ 3.14 복소수형 (0) | 2021.05.11 |
Comments