일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- c언어 포인터의 주소연산
- c언어 배열과 포인터
- C언어 문자열
- c언어 printf
- c언어 지역변수와 전역변수
- c언어 void와 void 포인터
- Tips프로그래밍강좌
- c언어 배열
- 김성엽
- c언어 함수
- c언어 포인터
- 지식나눔강좌
- c언어 표준입력함수
- C언어 조건문
- c언어 포인터의 캐스팅
- c언어 static과 const
- C언어 연산자
- C언어 상수
- c언어 시프트연산자와 비트연산자
- C언어 자료형
- c언어 포인터와 const 키워드
- Tips강좌
- c언어 표준출력함수
- Tipssoft
- c언어 2진수 출력
- c언어 변수
- c언어 포인터의 addressing
- C언어 반복문
- Today
- Total
거북이와 개구리의 끄적끄적
6일차_C언어(포인터의 const키워드와 주소연산과 캐스팅과 addressing, 표준입력함수, 배열과 포인터) 본문
6일차_C언어
이 글은 Tips 6일차 강의를 듣고 정리한 내용입니다.
잘못된 내용, 보충할 내용, 궁금한 내용 있으시다면 댓글 달아주시면 감사하겠습니다.
오늘의 목차는 아래와 같습니다.
-포인터의 const 키워드
-포인터와 주소연산
-포인터의 캐스팅 // 활용1.일부분만사용
-포인터의 addressing
-표준 입력 함수
-배열과 포인터
1.포인터의 const 키워드
포인터 변수에서는 const키워드를 3가지 방법으로 사용 가능.
변경하고 싶지 않은 놈의 앞에 두면 됨.
<const 자료형 *변수명>
*변수명의 값을 변경하지 않겠다.
<자료형* const 변수명>
<const 자료형* const 변수명>
*변수명의 값과 변수명의 값 둘 다 변경하지 않겠다.
<Swap함수에 적용하기>
void Swap(int *pa, int *pb)에서 pa와 pb의 주소변경을 막으려면?void Swap(int* const pa, int* const pb)로 수정하면 됨.
2.포인터와 주소연산
포인터는 어떤 대상을 가르키는 것이므로 포인터에 대한 연산은 일반적인 산술연산과는 결과가 다르다.
포인터(주소)에 대한 연산은 가르키는 대상의 자료형 크기만큼 연산 됨.
이를 주소연산이라 함.
int a = 10; a++; // a는 11
int* a = (int*)10; a++; // a는 14
<주소연산의 경우의 수>
<표>
3.포인터의 캐스팅
int* data = &변수;
char* p = (char*)data; 처럼 캐스팅으 해서 쓰는 경우가 있습니다.
왜 쓰는걸까요?
<데이터의 일부에 접근하는 방법>
<방법 별 특성>
4.포인터의 addressing
포인터의 addressing에는 2가지 방법이 있음
<Displacement addressing>
포인터 변수의 주소값을 대체(displacement) 하는 방법.
int* p = 주소; p++ 이런거
<Indexing addressing>
배열에서 인덱스를 사용했던 것처럼 똑같은 거.
int* p = 주소; *(p+0); *(p+1); 이런 거.
<뭐가 더 효율적일까?>
displacement addressing이 더 효율적이긴하나 요즘엔 최적화가 잘 되어있어서 비슷하다.
5.표준 입력
도입내용
<getchar, getc, gets>
<scanf>
<fflush()와 rewind()>
<void와 void*>
void
<표준입력함수들의 반환값>
6.배열과 포인터
<배열표기와 포인터표기의 호환>
<포인터로 선언하고 배열처럼 쓰는 경우>
수식의 깔끔 단순
<배열로 선언하고 포인터처럼 쓰는 경우>
배열의 하나의 요소의 일부 바이트에 접근.
<배열기준으로 포인터 선언하기>
int *p[10];
<포인터기준으로 배열 선언하기>
int (*p)[10];
int (*p)[10];
읽어주셔서 감사하고 강의 정리가 너무 늦어져서 죄송합니다.
'공부 > 팁스' 카테고리의 다른 글
7일차_C언어(프로세스와 메모리 모델, 메모리 할당, 다차원 포인터) (0) | 2018.07.24 |
---|---|
5일차_C언어(조별과제, 포인터) (0) | 2018.07.19 |
4일차_C언어(시프트연산자와 비트연산자, 지역변수와 전역변수, static과 const, 배열, 문자열) (2) | 2018.07.19 |
3일차_C언어(printf,연산자,제어문[조건문,반복문]) (5) | 2018.07.05 |
2일차_C언어(상수, 변수, 함수, 표준출력함수) (2) | 2018.07.02 |