C(13)
-
[C] 예전 스타일 함수 선언. K&R-Style Declarations
들어가며 동료가 회사 c 코드에서 특이한 걸 발견해서 좀 찾아봤다. 함수인데 인자는 괄호 안에 있지만 인자의 타입은 마치 클래스의 initializer-list와 비슷하게 선언된 형태. int foo(a, b, c) int a; int b; int c; { // some code return 0; } 신기하다. 어떻게 함수가 이렇게 생겼을 수가... K&R Style Declarations identifier-list form 이라 부르기도 하는듯 하다. 현대 C/C++에서 사용하는 방식은 parameter type-list form. C언어가 최초로 나왔을 때, 함수 프로토타입에 대한 스펙이 모호했다고 한다. 전방 선언도 있었지만 이도 리턴 타입에 대한 정의일 뿐 었다고 한다. 그래서 함수 선언 시 인..
2019.07.23 -
국기3기 정규수업 9&10일차 메모
9일차전체 토론1장 ~ 10장까지 전체 정리 10일차 포인터 int* a; 주소의 저장이 주 목적. 운영체제로부터 메모리공간 어딘가에 타입에 상관없이 4바이트의 메모리공간을 할당받고 그 주소위에는 a라는 방을 만들고 그 방안에는 쓰레기 주소값이 들어있다.(32비트운영체제) 운영체제에서 처리하기 좋아하는 단위가 1워드. 한 번에 프로세서가 램에 올리는게 1워드. int *a = 0; // 0x00000000은 운영체제가 쓰지 않는 주소. Null Pointer - 아무것도 가리키지 않는 주소. 널 포인터와 주소만 저장할 수 있다. 주소와 0! 모든 포인터는 초기화 시 Null로 초기화! 내부적으로 얼마씩 연산해야하는지 알아하기 때문이다. -----------------휴식-------------------..
2015.03.11 -
국기3기 정규수업 8일차 메모
조건문, 반복문, 형변환 조건문 - 참과 거짓을 판별하기 위한 문법.논리 - 명제 자체를 (프로그램적으로) 명확하게 세워야한다. ex) 0은 거짓이다.(프로그램적으로 명제를 참으로 정의함.) 1도 참이다. 2도 참이다. 0이 아닌 것은 모두 참이다. if, if~else, if~else if~else else는 if가 아닌 모든 경우 if는 생략할 수 없다. 분기문 switch(조건) { case 1: // 실행 break; ... default: break; }조건 - 정수형이 되어야한다. 실수, 문자열은 안됨! dafault와 else는 에러처리를 위해 사용. case lable 에러 - 스위치와 케이스의 변수의 애매함으로 인해 생기는 문제. 괄호를 해주는 습관! if else 문장은 -> switc..
2015.03.09 -
20150307 토론정리
오프라인 토론 - 혼자 연구하는 C/C++ 정리11장 배열과 포인터c에는 실제로 2차원 배열은 없다- 왜냐면 메모리는 선형 구조이기 때문이다.메모리상에는 선형으로 정의된다. 배열은 사실 포인터다. 첨자 연산은 내부적으로 포인터의 값 증가.- 서기가 적어놓은 것이긴 하지만. 배열이 포인터란 말은 조금 이상하지싶다.배열 접근의 내부적 연산이 배열과 같다는 것이지 배열이 포인터라고 표현하는건 조금 아닌거같다.배열의 배열명은 시작 주소를 가지는 포인터 상수이다.ar[10]이란 것이 있다면 컴파일러는 내부적으로 이것을 *(ar+10)으로 바꿔서 접근한다.그렇기 때문에 일반적으로 배열이 포인터보다 아주 살짝 느리다. 포인터 배열 = 요소가 포인터인 배열. 끝.이중 포인터 배열 **ptr[3]이라면 **ptr을 3개..
2015.03.07 -
20150306 토론정리
혼자 연구하는 c 정리.3장 [ 변수 ]진법 변환 주소 값은 왜 16진수?- 메모리 체계에서 2진 비트단위로 나타내는데 1바이트는 4바이트씩 2개해서 8바이트다.바이트 단위로 4개를 읽기 위해서 4비트로 표현할 수 있는 수는 16가지다.그래서 이를 활용하기 쉽게 16진수로 표현하는 것이다.실제 10진 정수형이었다면 자릿수가 바뀌고 사용하는데 매우 불편했을 것이다. 변수의 정의- 사전적 의미론 변할 수 있는 수, 데이터의 보존과 관리를 위함이다. 메모리 관리를 효율적으로 할 수 있다. int a를 선언하면 일어나는 일- 32비트 운영체제로부터 메모리공간 어딘가에 int형 정수 4바이트 만큼 할당받고그 주소위에 a라는 방을 만들고 그 방엔 쓰레기값이 들어있다. 왜 쓰레기 값이 다 같은가?- 내가 제시. 디버..
2015.03.07 -
(과제)입출력 함수들 비교
1. 입력 함수 비교scanf vs getsscanf는 공백 단위로 문자열을 받지만 gets는 공백을 포함하여 문자열을 받는다.gets는 변수 출력을 할 수 없다. 2. 출력 함수 비교printf vs putsprintf와 다르게 puts는 자동으로 개행된다. 그리고 변수를 출력할 수 없다. 3. 입력 버퍼사용여부 차이점엔터가 들어올때까지 입력을 담아둘 수 있다. Enter Key로 문자나 문자열을 리턴한다.입력시 문자 수정 가능 여부가 결정된다. 4. stdio.h, conio.hhttp://ko.wikipedia.org/wiki/Stdio.hstdio.h은 Standard Input/Output library (표준 입출력 라이브러리)의 약어로써, C 언어의 표준 라이브러리 함수의 매크로 정의, 상수..
2015.03.06