2015. 3. 7. 00:58ㆍ창고
혼자 연구하는 c 정리.
3장 [ 변수 ]
진법 변환
주소 값은 왜 16진수?
- 메모리 체계에서 2진 비트단위로 나타내는데 1바이트는 4바이트씩 2개해서 8바이트다.
바이트 단위로 4개를 읽기 위해서 4비트로 표현할 수 있는 수는 16가지다.
그래서 이를 활용하기 쉽게 16진수로 표현하는 것이다.
실제 10진 정수형이었다면 자릿수가 바뀌고 사용하는데 매우 불편했을 것이다.
변수의 정의
- 사전적 의미론 변할 수 있는 수, 데이터의 보존과 관리를 위함이다.
메모리 관리를 효율적으로 할 수 있다.
int a를 선언하면 일어나는 일
- 32비트 운영체제로부터 메모리공간 어딘가에 int형 정수 4바이트 만큼 할당받고
그 주소위에 a라는 방을 만들고 그 방엔 쓰레기값이 들어있다.
왜 쓰레기 값이 다 같은가?
- 내가 제시. 디버깅 모드에선 모두 같은 값. 릴리즈 모드에선 여러가지 값.
명칭이 64자 이상일 때 무시가 되는 게 맞는가?
- (시험 결과 400자 넘어도 무시가 안되는 걸로는 나옴)
교수님 수업에서의 명명법
- 전역 g_ , 파스칼
지역 카멜
함수 파스칼
확장 문자열
변수의 표현 범위
4장 [ 제어문 ]
if
switch
for
while
do while
5장 [ 연산자 ]
연산자 종류
연산자의 오버로딩 개념 (상황(피 연산자)에 따라서 연산자 기능이 바뀜)
- 연산 우선순위가 있지만 괄호로 끝.
캐스팅 연산자
관계 / 논리 연산자
- ||는 둘 중 하나만 참이어도 참. 논리 합 ( 1 + 0 = 1)
&&는 둘 중 하나만 거짓이어도 거짓. 논리 곱. (1 x 0 = 0)
쇼트 서키트
- 여러 논리 연산일 때, 논리 곱에서는 하나만 거짓이어도 빠져나옴
(따라서 논리곱은 연산이 빠른 것을 앞으로 )
논리 합의 경우에도 적용된다. 빠른 것을 먼저 처리해서, 참인 것을 하나라도 발견하면 전부 참
(컴파일러가 제공하는 서비스)
비트 연산자
연산 속도가 빠름.
산술 연산자
자동 형 변환
- 표현 범위가 큰 쪽으로
- 함수가 있을 때 형식인수와 실인수 대입.
- 연산시에 enum , short , char등은 자동으로 int로 전환되어 연산됨. short와 short를 연산하여 합이 더 작을 경우 아예 연산 자체가 불가능함. int형으로 자동으로 변경하여 연산 후 short로 돌리기 때문에 오버플로우 현상도 가능.
6장 [ 함수 ]
함수란 ?
함수의 종류.
- 리턴 값과 매개변수 여러가지 형태가 가능하다.
함수의 특징
- (함수에 대한 5가지 책 내용)
함수는 과연 평등한 관계인가??
- (아래의 함수가 위의 함수를 못 부르는 경우)
7장 [ 기억 부류 ]
데이터 영역 / 메모리 구조
- BSS영역과 자유영역에 대해 심도있게 조사해보기. 끝이 없는 토론.
의문점들
const(심볼릭) 상수는 어느 영역에 잡히는가 ?
리터럴 상수가 어디에 잡히는 가?
stack들의 크기가 1MB를 넘어가면?
레지스터 변수는 몇개 까지? 2개가 맞는 지?
기억 부류의 분류
함수 설계 원칙(중요)
- 함수의 이름을 최대한 설명적으로 작성하여 이름만으로 무엇을 하는 함수인지,
이왕이면 어떻게 쓰는 것인지도 알 수 있도록 한다.
- 두 번 이상 중복된 코드는 반드시 함수로 분리한다.
- 반복되지 않더라도 한 단위로 볼 수 있는 작업은 함수로 만든다.
- 함수는 한 번에 하나의 작업만 해야 한다.
- 입력과 출력이 직관적이고 명확해야 한다.
- 함수는 자체적으로 에러 처리를 해야 한다.
8장 [표준 함수]
표준 헤더들과 그 헤더의 들어 있는 함수들의 기능이 있다.
9장 [배열]
배열의 이름은 배열의 주소를 가리키는 상수 포인터인 동시에,
해당 배열 자체를 가리키는 배열 포인터이기도 하다.
arr[3] 일때 2[arr]도 가능하다!
다차원 배열 초기화 영역 지정을 안해주면 잘못 초기화가 되거나 에러가 될 수도 있다.
10장 [포인터]
메모리(물리적인 데이터 저장 공간)를 수치화한 것이 포인터.그것을 담는 것이 포인터 변수.
포인터에 왜 타입을 주는 가?
- 포인터 변수가 가르키는 곳의 해석, 변수 증감 범위 연산하기 위해서
같은 타입 끼리만 대입 가능
void 형 쓸 때는 캐스팅해줌.
1차원 포인터와 2차원 포인터의 차이
- 2차원 void 형은 어차피 포인터 가리키는 놈 (4byte) ++ 연산자등 다 됨. 단 void형 포인터 만 가리킬 수 있음.
malloc은 new 연산자 안에 있다. 데이터 공간 할당해줌. calloc은 0으로도 해줌 , realloc은 재할당.
'창고' 카테고리의 다른 글
20150308 토론정리 (0) | 2015.03.08 |
---|---|
혼자 연구하는 C/C++ 13장 정리(구조체) (0) | 2015.03.07 |
20150307 토론정리 (0) | 2015.03.07 |
국기3기 정규수업 6&7일차 메모 (0) | 2015.03.07 |
(과제)입출력 함수들 비교 (0) | 2015.03.06 |
국기3기 정규수업 5일차 (0) | 2015.03.05 |
국기3기 정규수업 3,4일차 메모 (0) | 2015.03.04 |