본문 바로가기
공부/c언어

13

by suyeon27 2023. 5. 12.
출처 : 윤성우. 윤성우의 열혈 C 프로그래밍. 오렌지미디어, 2010.
  • 몰랐던 or 까먹었던 내용 위주 정리

 

1. 배열의 이름(상수 형태의 포인터)은 배열의 시작 주소 값을 의미하며, 그 형태는 값의 저장이 불가능한 상수이다.

2. TYPE형 포인터를 대상으로 n의 크기만큼 값을 증가 및 감소 시, n * sizeof(TYPE)의 크기만큼 주소 값이 증가 및 감소합니다.

3. 변수 형태의 문자열, 상수 형태의 문자열

4. 큰따옴표로 묶여서 표현되는 문자열은 그 형태에 상관없이 메모리 공간에 저장된 후 그 주소 값이 반환된다.

 

 


 

 

배열의 이름은 상수 형태의 포인터이다. 따라서 * 연산도 가능
서식문자 %p : 주소 값의 출력

배열의 이름은 대입 연산자의 피연산자가 될 수 없다.(값의 저장이 불가능)

동일한 문장
int * ptr = &arr[0];
int * ptr = arr;


메모리 접근을 위한 * 연산

*ptr, *(ptr+1), *(ptr+2) == arr[0], arr[1], arr[2]

*(++ptr)=27; //ptr에 저장된 값 자체를 변경
*(ptr+1)=27; //ptr에 저장된 값은 변경되지 않음

arr[i] == *(arr+i)


변수 형태의 문자열
char str1[] = "Hi";

상수 형태의 문자열 
char * str = "Hi";

printf 함수는 문자열의 주소 값을 전달받는 함수이다.

문자열의 시작 주소 값을 담고 있다.


"큰따옴표로 묶여서 표현되는 문자열은 그 형태에 상관없이 메모리 공간에 저장된 후 그 주소 값이 반환된다."




'공부 > c언어' 카테고리의 다른 글

16  (0) 2023.06.02
14  (0) 2023.05.19
12  (0) 2023.05.05
11  (0) 2023.04.28
10  (0) 2023.04.21

댓글