본문

[전공지식] C에서 문장하고 단어의 저장문제

일시 추천 조회 561 댓글수 17


1

댓글 17

C[10] 으로 초기화가 되었다면 C[0] 첫번째 문자 겸 char 배열을 읽기 시작할 위치 C[1] 두번째 문자 C[9] 열번째 문자 로 저장 됩니다. 저장되는 방식은 특정 주소로가서 정의된 타입으로 몇번째 까지 또는 특정 기호를 만나기 전까지 라는 식으로 정의가 된다는 느낌 입니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:20
분쇄쿠키

아, 그러니까 실질적으론 C[10]하면 10Byte라는 의미인가요?

인민배우 심영 | (IP보기클릭)117.52.***.*** | 21.12.06 13:21
분쇄쿠키

C[10]에 대한 접근은 범위를 벗어나니 고확률로 세크폴트

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:21
인민배우 심영

Char array나 문자 배열에 대해 찾아보시면 더 정확한 설명을 보실수 있을 겁니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:24
인민배우 심영

문장의 끝을 나타내는 심볼을 위해 11byte 일겁니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:26

https://dojang.io/mod/page/view.php?id=60 https://dojang.io/mod/page/view.php?id=327

와일드다운 | (IP보기클릭)211.106.***.*** | 21.12.06 13:21

주소를 확인할 수 있는 코드 입니다. 온라인 c++컴파일러를 사용한거라 해더가 좀 그렇기는 하지만; #include <iostream> #include <cstring> using namespace std; int main() { char example[] = "hello"; printf("%c\n", example[0]); printf("%s\n", example); printf("%lu\n", sizeof(example)); printf("%lu\n", strlen(example)); printf("Address of example[0] = %p\n", &example[0]); printf("Address of example[1] = %p\n", &example[1]); printf("Address of example[2] = %p\n", &example[2]); printf("Address of example[3] = %p\n", &example[3]); printf("Address of example[4] = %p\n", &example[4]); return 0; }

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:38
분쇄쿠키

돌리시면 아마 이거 비슷하게 나올 겁니다. hello 6 5 Address of example[0] = 0x7ffc0f5eedb2 Address of example[1] = 0x7ffc0f5eedb3 Address of example[2] = 0x7ffc0f5eedb4 Address of example[3] = 0x7ffc0f5eedb5 Address of example[4] = 0x7ffc0f5eedb6

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:39
분쇄쿠키

크기의 경우 sizeof(example) = 6 => 문자 5byte + 단어의 끝을 알리는 심볼 1byte strlen(example) = 5 => 단어의 길이는 5, 끝을 알리는 심볼은 길이에서 제외 됩니다. 저장되는 방식은 example의 각 부분의 주소를 보시면 알 수 있습니다. 주소를 출력하는 부분을 보시면 알 수 있지만 주소가 연속 되어 있습니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 13:42
분쇄쿠키

오, 이렇게 알려주시니 확 들어오네요 저는 char는 string이던 letter건 무조건 1byte인줄 알고 있었는데 역시 길이에 따라 유동적이군요. 감사합니다.

인민배우 심영 | (IP보기클릭)1.216.***.*** | 21.12.06 14:20
인민배우 심영

혹시나 해서 하는 말이지만 char 은 1byte 입니다 char [10]은 char 타입 11개(문자10 심볼1)로 구성된 총 11byte의 배열 입니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 16:47
분쇄쿠키

char [10] 은 10byte 입니다.

컹컹컹컹컹컹컹 | (IP보기클릭)211.192.***.*** | 21.12.06 21:04
컹컹컹컹컹컹컹

그 끝자리를 알리는 심볼도 들어가지 않나요?

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.07 01:25
컹컹컹컹컹컹컹

다시 생각해 보니 그 10byte에 포함이군요. 이런 실수를;;

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.07 01:38

char배열이 곧 단어고 문장인데 나만 이해 못했나

닉에게물어보는닉네임 | (IP보기클릭)106.101.***.*** | 21.12.06 13:58
닉에게물어보는닉네임

질문을 하신 분이 아직 배열 관련 내용 배우시지 않으셔서 올리신 질문인 것 같습니다. 저는 질문 내용을 char에 단어나 문장이 어떻게 저장되는 가를 물으신 걸로 이해했습니다.

분쇄쿠키 | (IP보기클릭)70.54.***.*** | 21.12.06 14:28
분쇄쿠키

네 그런가보네요 제가 질문을 이해를 못하겠어서...;;

닉에게물어보는닉네임 | (IP보기클릭)106.101.***.*** | 21.12.06 16:14
댓글 17
1
위로가기
세가좋어 | 추천 0 | 조회 293 | 날짜 2024.04.12
공돌이인생 | 추천 0 | 조회 105 | 날짜 2024.03.29
루리웹-1970043849 | 추천 0 | 조회 200 | 날짜 2023.12.18
질풍비장의패 | 추천 1 | 조회 589 | 날짜 2022.11.30
루리웹-3648796984 | 추천 0 | 조회 774 | 날짜 2022.11.23
루리웹-8641268934 | 추천 2 | 조회 700 | 날짜 2022.08.07
루리웹-4247021526 | 추천 2 | 조회 747 | 날짜 2022.07.25
루리웹-4746138650 | 추천 0 | 조회 676 | 날짜 2022.06.01
키라 요시카게 | 추천 1 | 조회 736 | 날짜 2022.05.24
우너무너 | 추천 0 | 조회 663 | 날짜 2022.05.14
키라 요시카게 | 추천 0 | 조회 643 | 날짜 2022.04.03
와이플 | 추천 0 | 조회 652 | 날짜 2022.01.14
와이플 | 추천 0 | 조회 670 | 날짜 2022.01.13
와이플 | 추천 1 | 조회 819 | 날짜 2022.01.13
인민배우 심영 | 추천 0 | 조회 879 | 날짜 2022.01.09
인민배우 심영 | 추천 0 | 조회 726 | 날짜 2022.01.08
오잇스 | 추천 0 | 조회 644 | 날짜 2022.01.05
인민배우 심영 | 추천 0 | 조회 538 | 날짜 2022.01.02
인민배우 심영 | 추천 0 | 조회 661 | 날짜 2021.12.31
인민배우 심영 | 추천 0 | 조회 1029 | 날짜 2021.12.30
인민배우 심영 | 추천 1 | 조회 650 | 날짜 2021.12.27
salvare545 | 추천 0 | 조회 609 | 날짜 2021.12.27
_ 식봉이는 식봉해 | 추천 4 | 조회 1175 | 날짜 2021.12.27
인민배우 심영 | 추천 0 | 조회 702 | 날짜 2021.12.25
인민배우 심영 | 추천 1 | 조회 812 | 날짜 2021.12.24
인민배우 심영 | 추천 0 | 조회 916 | 날짜 2021.12.16
V1046R-MAHORO | 추천 1 | 조회 507 | 날짜 2021.12.14
인민배우 심영 | 추천 0 | 조회 702 | 날짜 2021.12.10

1 2 3

글쓰기
게시판 매니저