Top 22 C 언어 문자열 포인터 Best 232 Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me c 언어 문자열 포인터 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: c 언어 문자열 포인터 c언어 문자열 포인터 배열, c언어 문자열 입력, c언어 문자열 배열, c언어 문자열 출력, c언어 문자열 포인터 초기화, c언어 문자열 선언, C 문자열, c언어 문자열 함수


[혼공C_새로워진 이것이 C언어다] 22강- 문자열과 포인터
[혼공C_새로워진 이것이 C언어다] 22강- 문자열과 포인터


[C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) :: 안산드레아스

  • Article author: ansan-survivor.tistory.com
  • Reviews from users: 23704 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) :: 안산드레아스 [C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) · 1. 메모리 어딘가에 “hello world”가 할당된다. · 2. char * string … …
  • Most searched keywords: Whether you are looking for [C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) :: 안산드레아스 [C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) · 1. 메모리 어딘가에 “hello world”가 할당된다. · 2. char * string … 문자열(string)이란, 알파벳 하나하나가 메모리상의 연속적으로 나열되며, 마지막에는 ‘\0’ (NULL)으로 끝나는 배열이다. 위 그림과 같이 문자열을 만드는 방법은 아래와 같다. char string[11] = “hello world”;..
  • Table of Contents:
[C언어] 포인터로 문자열 선언 배열 문자열 선언과 차이 (문자열 내부 변경하기)

티스토리툴바

[C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) :: 안산드레아스
[C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) :: 안산드레아스

Read More

REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들

  • Article author: reakwon.tistory.com
  • Reviews from users: 18072 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들 문자열과 char 포인터. 오늘은 심심한데 문자열에 대해서 이야기 해볼까 해요~ 문자열과 포인터는 C언어에서 너무나 귀찮은 놈들인데,,, … …
  • Most searched keywords: Whether you are looking for REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들 문자열과 char 포인터. 오늘은 심심한데 문자열에 대해서 이야기 해볼까 해요~ 문자열과 포인터는 C언어에서 너무나 귀찮은 놈들인데,,, … 문자열과 char 포인터 오늘은 심심한데 문자열에 대해서 이야기 해볼까 해요~ 문자열과 포인터는 C언어에서 너무나 귀찮은 놈들인데,,, 그래도 꼭 쓰이니까요 char 자료형은 문자를 변수로 갖는 건 모두 아는 사실..
  • Table of Contents:
[C언어] 문자열과 char 포인터 문자열을 다룰때 하는 실수들

티스토리툴바

REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들
REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들

Read More

09-08. 포인터와 문자열 – C 언어

  • Article author: wikidocs.net
  • Reviews from users: 15466 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 09-08. 포인터와 문자열 – C 언어 예제 2: 포인터 이용 문자 배열 접근. #include int main(vo) { char array[] = {‘A’, ‘B’, ‘C’, ‘D’}; // 배열 크기 생략 가능 char* p = NULL; … …
  • Most searched keywords: Whether you are looking for 09-08. 포인터와 문자열 – C 언어 예제 2: 포인터 이용 문자 배열 접근. #include int main(vo) { char array[] = {‘A’, ‘B’, ‘C’, ‘D’}; // 배열 크기 생략 가능 char* p = NULL; … 온라인 책을 제작 공유하는 플랫폼 서비스
  • Table of Contents:

예제 1 문자 배열

예제 2 포인터 이용 문자 배열 접근

예제 3 문자열 배열

예제 4 종료 문자까지 출력

예제 5 문자 배열와 문자열의 차이

예제 6 문자열 변경

예제 7 문자열 상수

예제 8 포인터와 문자열

예제 9 포인터 배열 활용

예제 10 포인터의 상수화 (오로지 하나의 주소만 저장)

예제 11 포인터의 상수화 (포인터 통한 데이터 수정 방지)

예제 12 포인터의 상수화 (하나의 주소 & 데이터 수정 방지)

09-08. 포인터와 문자열 - C 언어
09-08. 포인터와 문자열 – C 언어

Read More

C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기

  • Article author: abcdefgh123123.tistory.com
  • Reviews from users: 1543 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기 C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다. 배열을 사용해 문자열을 처리하는 방법은. …
  • Most searched keywords: Whether you are looking for C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기 C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다. 배열을 사용해 문자열을 처리하는 방법은. C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다. 배열을 사용해 문자열을 처리하는 방법은 abcdefgh123123.tistory.com/31?category=939526 C언어 10강 배열(..안녕하세요 프로그래밍, 독서, 자기계발을 좋아하는 사람입니다.
  • Table of Contents:
C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기
C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기

Read More

C언어 – char형 포인터(문자열 표현 방법) : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 44529 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about C언어 – char형 포인터(문자열 표현 방법) : 네이버 블로그 이렇게 선언을 하면 메모리 공간에 문자열 “Your String”이 저장되고, 문자열의 첫 번째 문자 Y의 주소값이 반환된다. 그리고 그 반환 값이 포인터 변수 … …
  • Most searched keywords: Whether you are looking for C언어 – char형 포인터(문자열 표현 방법) : 네이버 블로그 이렇게 선언을 하면 메모리 공간에 문자열 “Your String”이 저장되고, 문자열의 첫 번째 문자 Y의 주소값이 반환된다. 그리고 그 반환 값이 포인터 변수 …
  • Table of Contents:

카테고리 이동

CODEHELPER

이 블로그 
C언어
 카테고리 글

카테고리

이 블로그 
C언어
 카테고리 글

C언어 - char형 포인터(문자열 표현 방법) : 네이버 블로그
C언어 – char형 포인터(문자열 표현 방법) : 네이버 블로그

Read More

[C언어] 문자열 선언 방법 정리(배열, 포인터)

  • Article author: jimmy-ai.tistory.com
  • Reviews from users: 33990 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [C언어] 문자열 선언 방법 정리(배열, 포인터) C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 … …
  • Most searched keywords: Whether you are looking for [C언어] 문자열 선언 방법 정리(배열, 포인터) C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 … C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 경우의 예시 코드를 살펴보고, 이 두 문자열 선언 경우의 특징을..
  • Table of Contents:
[C언어] 문자열 선언 방법 정리(배열 포인터)

C언어 string 배열 및 포인터 선언 예제 및 특징 비교

티스토리툴바

[C언어] 문자열 선언 방법 정리(배열, 포인터)
[C언어] 문자열 선언 방법 정리(배열, 포인터)

Read More

[C언어] 포인트 – 문자열 포인터 :: 프로그램 개발 지식 공유

  • Article author: araikuma.tistory.com
  • Reviews from users: 11673 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [C언어] 포인트 – 문자열 포인터 :: 프로그램 개발 지식 공유 문자 배열과 문자열에 대한 포인터에 대해 설명한다. 특성상 리터럴 문자열에 대한 포인터에서 리터럴 문자열을 변경해서는 안된다. …
  • Most searched keywords: Whether you are looking for [C언어] 포인트 – 문자열 포인터 :: 프로그램 개발 지식 공유 문자 배열과 문자열에 대한 포인터에 대해 설명한다. 특성상 리터럴 문자열에 대한 포인터에서 리터럴 문자열을 변경해서는 안된다. 문자 배열과 문자열에 대한 포인터에 대해 설명한다. 특성상 리터럴 문자열에 대한 포인터에서 리터럴 문자열을 변경해서는 안된다. 리터럴 문자열에서 읽어 들인 문자열을 편집할 경우는 배열에 복사해야 한다…컴퓨터 프로그래밍 개발에 대한 지식을 공유합니다.
    버그가 없는 프로그램은 존재하지 않지만, 디버그가 불가능한 프로그램도 역시 존재하지 않아.
  • Table of Contents:
[C언어] 포인트 – 문자열 포인터

리터럴 문자열에 대한 포인터

티스토리툴바

[C언어] 포인트 - 문자열 포인터 :: 프로그램 개발 지식 공유
[C언어] 포인트 – 문자열 포인터 :: 프로그램 개발 지식 공유

Read More

C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen)

  • Article author: infinitt.tistory.com
  • Reviews from users: 39969 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen) C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen). Newmon 2020. 3. 4. …
  • Most searched keywords: Whether you are looking for C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen) C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen). Newmon 2020. 3. 4. *문자열 (string) 문자는 char로 선언한다. 한글자가 아닌 여러개의 문자를 문자열 이라고 하며, 문자열을 선언(저장)하는 방법은 두가지이다. 1) 포인터를 사용한다. char *변수이름 = “문자열”; 2) 문자열 배열..
  • Table of Contents:

문자열 (string)

문자열 입력받기 (scanf)

EOF (End of File) 와 공백

문자열과 관련된 함수들

관련글

댓글0

최근댓글

태그

전체 방문자

티스토리툴바

C 언어 - 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen)
C 언어 – 문자열 총정리 | 문자열 관련 함수 , 버퍼 (buffer) 포인터 문자열 (pointer) , 입력값 받기 (scanf , EOF ,strlen)

Read More


See more articles in the same category here: https://chewathai27.com/to/blog.

[C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기)

반응형

문자열(string)이란, 알파벳 하나하나가 메모리상의 연속적으로 나열되며, 마지막에는 ‘\0’ (NULL)으로 끝나는 배열이다.

위 그림과 같이 문자열을 만드는 방법은 아래와 같다.

char string[11] = “hello world”;

char이므로 한칸당 1byte를 사용하며, “~~”문자열 맨 뒤에 \0 (NULL)문자는 자동으로 들어가게 된다.

고로 띄어쓰기를 포함한 모든 문자들 공간과 마지막의 NULL이 들어갈공간을 포함해 11개의 공간을 선언했다.

C언어로 문자열을 표현하는 방법은 대표적으로 배열선언과 포인터 선언이 있다.

배열도 “상수형 포인터”로 결국 포인터와 동일한 역할을 한다. (아래 참고.)

https://ansan-survivor.tistory.com/1249

<배열으로 문자열 선언>

배열으로 선언하는 방법은 메모리공간을 미리 할당하는 방법과, 컴파일러가 문자열 길이를 보고 알아서 할당시켜주는 방법이 있다.

// 배열로 선언하는 방법. 메모리를 미리 할당함. char string[11] = “hello world”; // 배열로 선언, 메모리 공간은 컴파일러가 알아서 할당 함. char string[] = “hello world”;

<포인터로 문자열 선언>

포인터로 선언하는 방법은 아래와 같이 간단하다. 하지만 여기서 string 이라는 변수는 포인터변수로 선언되었기에 주소값을 저장할 수 있다. 저 주소값은 문자열의 첫번째 항을 가리킨다. 즉, 아래 h문자를 가리키고 있다.

하지만 배열의 문자열 선언과 다른점은 “hello world”라는 문자열은 메모리 어딘가에 선언이 되었는데, 이는 상수형 문자열 특성을 지니므로 마음대로 문자하나하나를 변경할 수 없다.

char* string = “hello world”;

원리는 아래 순서를 따른다.

1. 메모리 어딘가에 “hello world”가 할당된다.

2. char * string 변수가 선언된다.

3. string은 h의 주소값을 가리킨다. ( *string = ‘h’ )

포인터 변수 string은 h의 주소를 가리키므로 *string를 출력하면 ‘h’가 출력되고, (*string + 1)으로 출력하면 그 뒤에 있는 문자인 ‘e’가 출력된다. 단 “hello world” 전체는 상수형으로 할당되었기 때문에 임의로 배열을 변경할 수 없다.

다시말해 *string = ‘k’ 이런식으로 포인터로 값을 변경할 수 없다. 상수이기 때문에.

반응형

(배열로 선언하고 내부인자 변경가능)

#include int main() { // 배열으로 문자열 선언 char str1[] = “hello world”; // 배열으로 선언한 문자열 내부인자는 변경 가능 printf(“변경전: %s

“, str1); str1[1] = ‘k’; printf(“변경후: %s

“, str1); return 0; }

2번째 인자가 k로 변경되었다.

(포인터로 선언하고 변경을 원할 시, 다른 문자열 주소를 넣어주어야 한다.)

#include int main() { // 포인터로 문자열 선언 // “hello world” 문자열은 상수형태로 변경 불가. char * str2 = “hello world”; printf(“변경전: %s

“, str2); // 문자열을 바꾸고 싶은경우 다른 문자열을 선언해야 함. str2 = “declare other string !”; printf(“변경후: %s

“, str2); return 0; }

메모리 어딘가 상수형으로 선언된 문자열을 기존의 것은 버리고, 새로 변경된 문자열의 앞자리인 ‘d’를 가리키게 된다.

* 위 포인터 원리와 동일하게 만약 아래와같은 printf함수를 선언하면 이는 메모리 어딘가에 상수형 문자열을 만드는것과 동일하다.

즉, 메모리 어딘가 “hi nice to meet you” 라는 상수형 문자형을 할당하고, 이를 첫글자의 메모리 주소로 치환한다.

printf(“hi nice to meet you”);

즉 만약 첫글자의 ‘h’ 의 문자열 주소가 0x0123 이라면, 컴퓨터가 이해하는 것은 아래와 같다.

printf(0x0123)

<여러 문자열을 품고있는 배열 포인터 선언>

https://ansan-survivor.tistory.com/1252

반응형

REAKWON :: [C언어] 문자열과 char 포인터, 문자열을 다룰때 하는 실수들

문자열과 char 포인터

오늘은 심심한데 문자열에 대해서 이야기 해볼까 해요~ 문자열과 포인터는 C언어에서 너무나 귀찮은 놈들인데,,, 그래도 꼭 쓰이니까요

char 자료형은 문자를 변수로 갖는 건 모두 아는 사실이죠?

근데~

우리는 문자열을 쉽게 할당하고 싶단 말이에요.

우리는 배열이라는 아주 편리한 변수 선언 법을 알고 있답니다.

배열로 문자열을 표현하는 방법을 알아보겠습니다.

char hello[6] = { ‘h’,’e’,’l’,’l’,’o’,’\0′ };

이 표현은 char이 자료형을 배열로 문자열을 표현한 방법이랍니다.

‘\0’ 라는 문자는 NULL문자라는 뜻입니다. 문자열의 끝을 알려줍니다.

그래서 hello가 다섯글자임에도 불구하고 배열 크기를 6으로 잡은 겁니다.

또 이런 선언법도 가능합니다.

char hello[6] = “hello”;

그렇다면 우리가 문자열의 길이를 알고 싶다면 널문자가 나타나기 전까지만 세어주면 문자열의 길이를 알 수 있겠네요.

#include int main() { char *ptr = “ABCDEF”; int len = -1; while (*(ptr+(++len))); printf(“문자열 길이: %d

“, len); }

그 결과는 이렇겠네요.

len=-1인 이유는 null문자 이전까지만 세어주기 위함입니다. while의 조건절은 null이면 멈추어 버립니다.

여기까지는 쉽네요. 포인터로는 어떻게 표현할까요?

사실 문자열(“~~~~”)은 그 문자열이 시작되는 주소를 가리키게 됩니다.

주소를 가리킨다!?

그러면 포인터가 생각나지 않나요?

왜냐면 주소를 포인터로 가리키면 문자열을 찾을 수 있으니까요.

그러면 이렇게 선언할 수 있을까요?

char *ptr = “hello”;

포인터 ptr은 “hello”라는 문자열을 가리키는 포인터입니다.

그림에서 보는 것과 같이 ptr은 문자열 “hello”의 주소를 가리키고 있고, 그렇기 때문에 참조가 가능한 상태가 됩니다. 그렇다면 어떤 포인터 역시 hello를 가리킨다면 그 주소는 같을까요?

코드와 결과로 확인해보도록 합시다.

#include int main() { char *ptr1 = “hello”; char *ptr2 = “hello”; printf(“%s, %s

“, ptr1, ptr2); printf(“%p, %p

“, ptr1, ptr2); }

같다는 것을 알 수 있습니다. 우리는 이런 그림을 그려볼 수 있겠네요.

ptr1과 ptr2는 서로 같은 문자열을 가리킵니다.

배열과 포인터에 대해서 선언방법은 그렇게 차이가 없어보이죠?

그렇다면 문자열 배열과 포인터는 서로 같은 성질을 갖고 있을까요?

만약 아래와 같은 코드를 입력한다 arr에 ptr가 가리키는 문자열을 넣으라는 거겠죠??

char arr[10] = “world”;

char *ptr = “hello”;

arr = ptr;

“hello”라는 문자열의 길이는 배열크기보다 작기 때문에 들어갈 것입니다.

이렇게 생각하셨다면 다시 생각해봅시다. 오류나니까요.

문자열 “hello” 그 주소 자체를 반환합니다. 그러니까 “hello”의 시작주소가 되는 것이죠. 그것이 ptr이 갖고 있는 값입니다.

arr자체는 arr[0]의 주소, 즉 배열의 시작 위치를 말합니다. 이러한 시작 주소를 마음대로 ptr이 가리키고 있는 주소로 바꿀 수 없습니다.

이 의미는 더 쉽게 풀어서 이야기하면

int a = 0;

int b = 30;

&a = b;

랑 유사한 짓거리를 하는 것이라는 거죠. 마치 a의 주소를 b의 값으로 변경하라는 것과 유사하게 되어버립니다.

하지만 그 반대는 가능합니다. 이렇게요.

char arr[10] = “world” ;

char *ptr = “hello”;

ptr = arr;

ptr은 주소를 갖을 수 있는 포인터, arr은 arr[0]의 주소! 말이 되죠 이건??

그러니 ptr은 arr과 동일한 곳을 가리키게 되는 겁니다.

만약

arr = ptr;

이걸 죽어도 써야겠다. 난 arr에다가 ptr의 문자열을 진짜 안쓰면 디질거 같다.

하시는 분들은 ptr의 문자열을 복사해서 쓰는 방법밖에 없습니다.

strcpy(arr, ptr)

이렇게 하시면 arr에 ptr이 가리키는 문자열을 그대로 복사해서 arr에 쑤셔 넣습니다. 주의 할 사항은 arr의 크기는 ptr이 가리키고 있는 문자열의 길이 이상으로 커야한다는 겁니다.

그렇지 않으면 런타임 오류납니다. 컴파일에서 문자열의 길이를 검사하지 않습니다! 이 오류가 바로 그 유명한 버퍼오버플로우(buffer overflow)가 됩니다. 취약점인거죠. 버퍼오버플로우를 통해 해커는 함수의 return 주소를 변경하여 자신의 실행코드를 실행합니다. 별짓을 다할 수가 있게 됩니다. 그래서 그 대안으로 strncpy, strncat 이런것이 나오게 된겁니다.

그리고 또!

포인터와 배열에는 다른 차이점이 있습니다.

문자열을 초기화 할때 배열은 배열 원소를 변경할 수 있지만, 포인터는 배열의 원소를 바꿀 수 없습니다.

즉, 포인터로 초기화 한다면 상수적인 성격을 띈다라는 것입니다.

가령, 아래 코드가 있다면 ptr[0] 변경시 오류가 발생합니다.

char hello[10] = “hello”;

char *ptr = “hello”;

ptr[0] = ‘H’; //오류

hello[0] = ‘H’;

하지만

char hello[10] = “hello”;

char *ptr = hello;

ptr[0] = ‘H’;

hello[0] = ‘H’;

이건 오류가 나지 않습니다. 왜냐면 hello는 배열이거든요. 배열은 그 원소의 값이 변경가능합니다. ptr은 배열의 시작주소를 참조하고 있는 포인터이기 때문입니다.

그래서 이러한 strcat를 써먹을때도

#include #include int main() { char *hello = “hello, “; strcat(hello, “world”); printf(“%s

“, hello); }

가 아닌

#include #include int main() { char hello[20] = “hello, “; strcat(hello, “world”); printf(“%s

“, hello); }

이런 형태나

#include #include int main() { char hello[20] = “hello, “; char *ptr = hello; strcat(ptr, “world”); printf(“%s

“, ptr); }

이런식으로 쓰여야 한다는 겁니다. 이렇게 간단하게 문자열과 포인터에 대해서 알아보았습니다. 부족한 점은 나중에 또 보충 설명해보도록 할게요 ㅎㅎ

09-08. 포인터와 문자열

예제 1: 문자 배열

#include int main(void) { char array[] = {‘A’, ‘B’, ‘C’, ‘D’}; // 배열 크기 생략 가능 printf(“문자 배열 변경 전: %c %c %c %c

“, array[0], array[1], array[2], array[3]); array[0] = ‘D’; array[1] = ‘C’; array[2] = ‘B’; array[3] = ‘A’; printf(“문자 배열 변경 후: %c %c %c %c

“, array[0], array[1], array[2], array[3]); printf(“문자 배열 array의 크기: %u

“, sizeof(array)); return 0; }

예제 2: 포인터 이용 문자 배열 접근

#include int main(void) { char array[] = {‘A’, ‘B’, ‘C’, ‘D’}; // 배열 크기 생략 가능 char* p = NULL; p = array; printf(“%c %c %c %c

“, p[0], p[1], p[2], p[3]); printf(“%d %d %d %d

“, p[0], p[1], p[2], p[3]); printf(“%c %c %c %c

“, *(p + 0), *(p + 1), *(p + 2), *(p + 3)); printf(“%d %d %d %d

“, *(p + 0), *(p + 1), *(p + 2), *(p + 3)); return 0; }

예제 3: 문자열 배열

#include int main(void) { char array[] = “ABCD”; // “ABCD” == {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’} printf(“%c %c %c %c %c

“, array[0], array[1], array[2], array[3], array[4]); printf(“%d %d %d %d %d

“, array[0], array[1], array[2], array[3], array[4]); printf(“%u

“, sizeof(array)); return 0; }

예제 4: 종료 문자까지 출력

#include int main(void) { char array[] = “ABCD”; // “ABCD” == {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’} printf(“%s

“, array); printf(“%s

“, array + 1); printf(“%s

“, array + 2); printf(“%s

“, array + 3); return 0; }

예제 5: 문자 배열와 문자열의 차이

#include int main(void) { char array1[] = {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’}; char array2[] = {‘A’, ‘B’, ‘C’, ‘D’}; printf(“%s

“, array1); printf(“%s

“, array2); // 원하지 않는 결과 생성 return 0; }

예제 6: 문자열 변경

#include int main(void) { char array[] = “ABCD”; printf(“%s

“, array); array[0] = ‘X’; array[3] = ‘7’; printf(“%s

“, array); return 0; }

예제 7: 문자열 상수

#include int main(void) { char* p = “ABCD”; // 문자열 상수 ABCD\0 printf(“문자열 상수의 주소 : %p

“, &”ABCD”); // 문자열 상수의 주소 printf(“———–

“); printf(“%s

“, p); printf(“%s

“, p + 1); printf(“%s

“, p + 2); printf(“%s

“, p + 3); printf(“———–

“); printf(“%p

“, p); printf(“%p

“, p + 1); printf(“%p

“, p + 2); printf(“%p

“, p + 3); return 0; }

예제 8: 포인터와 문자열

#include int main(void) { char array[] = “ABCD”; // 문자열 상수 ABCD\0 를 문자 배열 형태로 저장 char* p = “EFGH”; // 문자열 상수 EFGH\0의 처음 주소 가리킴 printf(“%u, %u

“, sizeof(array), sizeof(p)); printf(“———–

“); array[0] = ‘X’; // 하지만 p[0] = ‘X’ 는 에러 (상수 변경 불가) printf(“%s

“, array); printf(“%s

“, p); printf(“———–

“); p = array; printf(“%s

“, array); printf(“%s

“, p); printf(“———–

“); p = p + 1; // 하지만 array = array + 1 은 에러 (배열 이름은 수정 불가) printf(“%s

“, array); printf(“%s

“, p); return 0; }

예제 9: 포인터 배열 활용

#include int main(void) { char* p = “Good morning”; char* q = “C-language”; char* array[2] = {“Hello world”, “I am not alone”}; // 포인터 배열 printf(“%s

“, p); printf(“%s

“, q); printf(“—————-

“); printf(“%s

“, array[0]); printf(“%s

“, array[1]); printf(“—————-

“); printf(“%s

“, p + 5); printf(“%s

“, q + 2); printf(“—————-

“); printf(“%s

“, array[0] + 6); printf(“%s

“, array[1] + 9); return 0; }

예제 10: 포인터의 상수화 (오로지 하나의 주소만 저장)

#include int main(void) { char a = ‘A’; char b = ‘B’; char* const p = &a; // 포인터의 상수화 printf(“%c

“, *p); *p = b; printf(“%c

“, a); //p = &b; // 에러 발생 return 0; }

예제 11: 포인터의 상수화 (포인터 통한 데이터 수정 방지)

#include int main(void) { char a = ‘A’; char b = ‘B’; const char* p = &a; // 데이터의 상수화 printf(“%c

“, *p); p = &b; printf(“%c

“, *p); //*p = b; // 에러 발생 return 0; }

예제 12: 포인터의 상수화 (하나의 주소 & 데이터 수정 방지)

So you have finished reading the c 언어 문자열 포인터 topic article, if you find this article useful, please share it. Thank you very much. See more: c언어 문자열 포인터 배열, c언어 문자열 입력, c언어 문자열 배열, c언어 문자열 출력, c언어 문자열 포인터 초기화, c언어 문자열 선언, C 문자열, c언어 문자열 함수

Leave a Comment