20150306 토론정리

2015. 3. 7. 00:58창고

728x90
728x90


혼자 연구하는 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은 재할당.





728x90
반응형

'창고' 카테고리의 다른 글

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