Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- php
- 컴퓨터과학총론
- 자바
- 한글
- unity
- it
- 개발
- kakao
- javascript
- techEmpower
- 구글
- ubuntu
- android
- Portfolio
- centOS7
- server
- C
- java
- 번역
- 안드로이드
- caddy
- 프래그먼트
- MySQL
- error
- H2O
- C lanuage
- 해석
- 개발자
- NGINX
- mariadb
Archives
- Today
- Total
개발모음집
C 포인터, 구조체, 공용체 본문
1. 포인터 개념과 문자형 포인터
포인터변수는 메모리의 주소를 값을 기억하는 변수를 말한다.
형식
자료형 *포인터변수의 이름;
- 위치에 따른 '*'의 차이
1. 선언부, 포인터 변수를 선언하는 것
2. 수행문, 변수안에 저장된 기억장소가 가리키는 위치의 기억공간의 값
변수 ++; 은 1을 증가하는 것이 아니라, 변수형의 크기만큼 증가한다.
char arr[];int *p;p= arr;p++ // 만약 arr의 주소가 500번지라면, p++은 501번지를 가리키는 것이 아니고, 다음 저장공간을 가리킨다. 그래서 2byte뒤인 502번지를 뜻함char *, int *, float * 등 어떠한 자료형이든 전부 포인터형이라는 새로운 자료형으로 소형 컴퓨터에서는 모두 다 2byte! (왜냐하면 메모리주소를 2byte로 표현하기 때문)2. 배열과 포인터과의 관계
예)
char arr[ ] = {'a', 'b', 'c'};
char *p;
주소의 표현: p = arr = &arr[0]
값의 표현: *p = *(arr) = arr[0]
그래서 for문안에 출력할 때는 아래와 같이 표현한다.
주소의 표현: p+i = arr+i = &arr[i]
값의 표현: *(p+i) = *(arr+i) = arr[i]
** 포인터형의 변수와 이 포인터형의 변수가 가리키는 주소의 변수형은 같아야한다.
char arr[];
char *p;
3. 문자배열 초기화
3-1. char Ch[ ] = {'a', 'b', 'c'}; // 'a', 'b', 'c'3-2. char Ch[ ] = {'a', 'b', 'c'}; // 'a', 'b', 'c', '\0'3-3. char Ch[ ] = "abc"; // 'a', 'b', 'c', '\0'3-4. char Ch[2][4] = {"abc", "def"}; // 1열 'a', 'b', 'c', '\0' 2열 'd', 'e', 'f', '\0'3-5 char Ch[ ][4] = {"abc", "def"}; // 1열 'a', 'b', 'c', '\0' 2열 'd', 'e', 'f', '\0'3-6. char Ch[ ][4] = {"abc", "def", "ghi"}; // 1열 'a', 'b', 'c', '\0' 2열 'd', 'e', 'f', '\0' 3열 'g', 'h', 'i', '\0'char *p = "abc"; // 'a', 'b', 'c' '\0'3-5. char *Ch[2] = {"abc", "def"}; // 1열 'a', 'b', 'c' '\0' 2열 'd', 'e', 'f' '\0'3-6. char *Ch[ ] = {"abc", "def"'}; // 1열 'a', 'b', 'c' '\0' 2열 'd', 'e', 'f' '\0'
이중포인터 형식
자료형 **포인터변수의 이름;
삼중포인터 형식
자료형 ***포인터변수의 이름;
구조체:
자바의 클래스와 비슷하다
1. Struct 구조체tag {필드 자료형 필드이름;...}struct 구조체이름 구조체변수; // 메모리 할당2. Struct 구조체tag {필드 자료형 필드이름;...}구조체 변수;3. Struct {필드 자료형 필드이름;}구조체 변수;4. typedef Struct 구조체tag {필드 자료형 필드이름;}재정의 타입명;재정타입명 구조체변수
구조체의 멤버변수에 접근하는 방법
구조체변수.멤버변수
공용체:
구조체랑 비슷하다
구조체의 크기는 각각 멤버변수크기의 총합이 크기라면
공용체의 크기는 멤버변수 중 제일 큰 멤버변수크기가 공용체크기다.
그래서 메모리의 효율성이 좋다.
' Theory' 카테고리의 다른 글
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 04 네트워킹과 인터넷 (0) | 2016.06.27 |
---|---|
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 03 운영체제 (0) | 2016.06.27 |
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 02 데이터 조작 (0) | 2016.06.27 |
C 기초 복습 (0) | 2016.06.26 |
Eclipse에서 C 실행하기 (내가 겪은 에러) (0) | 2016.06.26 |