C 11

[C언어] 13. 함수 포인터

13. 함수 포인터 - C언어에서는 함수의 이름을 이용해 특정한 함수를 호출한다. - 함수 이름은 메모리 주소값을 반환한다.(배열도 주소값 반환하는 것처럼) (예제1) 함수이름이 메모리주소를 반환하는 예 #include void function() { printf("i make a my function."); } int main(void) { printf("%d\n",function); system("pause"); return 0; } (해설) 실행 시켜보면 내가 직접 만든 함수들도 함수이름을 출력하도록 하면 각각 자기의 주소값을 가지고 있는 걸 확인 할 수 있다. - 함수 포인터는 특정한 함수의 “반환 자료형”을 지정하는 방식으로 선언 할 수 있다. - 함수 포인터를 이용하면 “형태가 같은” 서로 “..

[C언어] 11. 다차원 배열과 포인터 배열

11. 다차원 배열과 포인터 배열 - 2차원 배열은 굉장히 많은 목적으로 사용된다 - 행렬 데이터를 표현할 때, 그래프 알고리즘을 처리할 때, 다수의 실생활 데이터를 처리 할 때 등 이름 영어성적 수학성적 국어성적 홍길동 85 97 79 유관순 100 89 98 이순신 99 77 99 장보고 89 70 78 신립 95 98 98 ▶ 흔히 우리가 보는 “표 구조”가 “2차원 배열”과 흡사하다. - 2차원 배열은 1차원 배열이 중첩되었다는 의미로 [대괄호]를 두 번 연속하여 쓴다. [ ][ ] 「자료형 배열이름 [행][열]={{값,값,값,…},{값,값,값,…},{값,값,값,…}∙∙∙}」 ex) int a[10][10]; (10x10행렬) - 2차원 배열 또한 0인덱스부터 시작한다. ex) a[0][2] : ..

[C언어] 10. 컴퓨터가 변수를 처리하는 방법

10. 컴퓨터가 변수를 처리하는 방법 - 컴퓨터에서 프로그램이 실행되기 위해서는 프로그램이 메모리에 적재(load)되야 한다. - 프로그램의 크기를 충당 할 수 있을 만큼의 메모리 공간(4기가 ,8기가 ,16기가 등등)이 있어야하는데, 일반적인 컴퓨터의 운영체제는 메모리 공간을 네 가지로 구분하여 관리한다. 코드 영역 데이터 영역 힙 영역 스택 영역 소스 코드 전역 변수 정적 변수 동적 할당 변수 지역 변수 매개 변수 (함수마다포함하고음) - 프로그램의 어디서든 접근 가능한 변수(전체-Global) - main 함수가 실행되기도 “전”에 “프로그램의 시작과 동시에 메모리에 할당” - 프로그램의 크기가 커질수록 전역 변수로 인해 프로그램이 복잡해 질 수 있다. - 메모리의 데이터(Data)영역에 적재된다...

[C언어] 9. 문자열

9. 문자열 - 말 그대로 문자들의 배열이다 - 문자열은 컴퓨터 메모리 구조상에서 마지막에 널(NULL)값을 포함한다.(NULL: 컴퓨터상에서 존재하지 않는다. 즉, 어떠한 값도,의미 있는 값이 들어가 있지 않다.) - NULL값이 들어가는 이유는 문자열의 끝을 알리는 목적으로 사용된다.(\0) - printf문을 실행하면 컴퓨터는 내부적으로 NULL값을 만날 때 까지 출력한다. - 문자열 형태로 포인터를 사용하면 포인터에 특정한 문자열의 주소를 넣게 된다. - 문자열을 읽기 전용으로 메모리 공간에 넣은 뒤에 그 위치를 처리한다. - 문자열 리터럴(“”큰 따옴표 안에 어떠한 문자열이 들어가는 구조) 자체는 변경이 불가능하다. 문자열을 바꾸고 싶으면 포인터가 가리키고 있는 문자를 바꾸면 된다. (예제1)포..

[C언어] 8. 문자

8. 문자 - C프로그램의 문자는 아스키 코드(Ascii Code)를 따른다 - 아스키 코드는 0부터 127까지 1바이트로 구성되며 주요 문자를 출력하도록 해준다 0: 48~9:57 A: 65~Z: 90 (각 소문자와 대문자의 차이는 32이다) a: 97~z:122 숫자,대문자,소문자의 기본적인 아스키코드는 기억하자!!(숫자,대문자,소문자 순으로 아스키코드가 크다) (예제1) 아스키코드값이 어떤 문자를 가질까 #include int main(void) { char a = 65; printf("%c\n",a); system("pause"); return 0; } (해설) 변수의 자료형은 char이고 캐릭터형 자체에 숫자를 넣어서(char a=65;) 처리를 할 수 있다. printf문에서는 형식 지정자로 ..

[C언어] 6. 배열

6. 배열 - 3개의 숫자가 있을 때 가장 큰 숫자를 구하는 프로그램을 작성한다고 하면, 기본적으로 변수의 이름을 a,b,c로 설정하면 된다. 하지만, 숫자가 100개라면 어떻게 처리할 수 있을까? ▶비효율적이긴 하지만 변수 100개를 초기화 시킬 수 있다.(만들어서 선언할 수는 있다. 정말 비효율적) 하지만, 숫자가 100만개라면..? ▶ 일일이 변수를 만들어서 처리할 수 없을 것이다. 따라서, “동일한 자료형”을 “여러 개 담는 기술”이 필요한데, 이것이 바로 배열이다! - 배열을 사용하면 동일한 성격의 데이터를 다수 표현할 수 있다. 배열의 선언 자료형(double, float, int 등등) 배열명 [배열의 크기]={초기화 값}; - 배열의 크기는 배열의 개수라고 생각하면 된다 - 초기화 값은 있..

[C언어] 5. 함수

5. 함수 - 함수는 입력을 받아 처리한 뒤에 출력하는 구조를 가진다. (“입력함수▶출력”) - 특정한 기능에 대한 소스코드가 반복되는 것을 줄이도록 해준다. - 함수의 형태는 반환자료형 함수명(매개변수){ 수행될 명령어 return 반환할 값; } 여기서, 반환자료형은 함수가 수행되어서 “처리된 결과”를 “어떠한 자료형”으로 반환할 것이지 써줘야한다. ex) int,boolean... - 함수에서 매개변수와 return 반환할 값은 경우에 따라서 없을 수 있다.(예를 들어, 어떠한 내용을 단순히 출력만 하고자 하는 함수라면 굳이 어떠한 매개변수를 받을 필요가 없기 때문에 매개변수 자리나 return값이 없어도 된다) - 이럴 때에 자료형에는 void가 들어간다. (예제1)말머리 붙이기 #include ..

[C언어] 4. 반복문

4. 반복문 - for문 내부의 조건에 부합하면 계속해서 특정한 구문을 실행 - 반복문을 탈출하고자 하는 위치에 break구문 넣어준다. for(초기화; 조건; 반복 끝 명령어){ 반복적으로 실행할 부분 } - for문은 1)특정한 초기화 구문을 거칠 수도 있고 이 초기화 구문이 없을 수도 있다. - 다음으로, 2)조건을 만족한다면 실행할 부분을 실행하고 다시 돌아오게 되는데, 3)반복 끝 명령어를 수행하면서 들어왔을 때 조건이 다시 만족한다면 실행할 구문이 또 실행되는 것이다. 이게 계속 반복되는 원리 (예제1) 1부터 100까지의 정수 출력하기 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { for (int i = 0; i

[C언어] 3. 조건문

3. 조건문 - if문 내부의 조건을 검사해 프로그램의 진행 경로를 결정 - if문은 조건의 개수가 많지 않을 때 사용하는 것이 유리하다. (사용은 가능하나 비효율적-else if 조건문(elif 아니다!)이 몇백개 달려도 사용은 가능,else if나 else는 사실 사용하지 않아도 괜찮은 문법) if 조건1 { (조건1에 부합할때) } else if 조건2 { (조건1에 부합하지 않지만 조건2에 부합할때 ) } else { (위 조건들에 모두 부합하지 않을 때) } (예제1) If문 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { printf("손님이 몇 명 왔나요?"); int a; scanf("%d", &a); if (a == 1 || a ==..

[C언어] 2. 연산자

2.연산자 ex) A+B에서 ‘A’,’B’는 피연산자 ‘+’는 연산자 - 피연산자는 연산에 포함되는 ‘변수’나 ‘상수’를 의미 - '='등호 를 이용해서 우변항을 좌변항에 넣을 수 있다.->자료형에 부합하는 값을 좌변항에 있는 변수에 넣습니다.:할당 - 사칙연산(+,-,*,/) - 나누기는 / 를 사용하는데 몫만 나온다. - %(modular연산)는 나머지를 구할 수 있다. (예제1) 사칙연산 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d + %d = %d\n",a,b,a+b); printf("%d - %d = %d\n",a,b,a-b); printf("%d * %d ..

반응형