반응형

iOS/정보처리기사 38

[정보처리기사] C언어 - 함수에 주소를 전달하는 예제1

함수에 주소를 전달한다.라는 말은 포인터를 전달하겠다라는 말과 동일하다. 예제를 통해 보면 ex1 #include int main(void) { int x = 10, y = 20; printf("%d", f(&x, y)); printf("%d %d, ₩n", x, y); } int f(int *i, int j) { *i += 5; return(2 **i + ++j); } 해설 main x x의 주소 y y의 주소 초기값 10 100번지 20 200번지 *i += 5로 인해 x가 15 15 21 printf("%d", f(&x, y)); -> x의 주소, y의 값을 출력하라 printf("%d %d, ₩n", x, y); -> 15,21 f i = x의 주소 *i += 5 ( i의 값) j = y값 초기값..

[정보처리기사] C언어 - 함수의 기본 (swap함수 예제)

함수란? 반복적인 수행을 정의해 놓은 작은 프로그램 단위 함수의 구조 반환타입 함수명(인자) { 수행 작업들 } 함수의 선언과 사용 int sum( int a, int b) { int c = a+b; return c; } int data = sum(10, 20); printf("%d", data); ex. #include void swap(int a, int b) { int temp; temp = a; a = b; b = temp; } int main(void){ int k, j; k = 3; j = 2; swap(k,j); printf("k = %d, j = %d", k, j); return 0; } 해설 k = 3이고 j = 2인데 swap 함수를 호출한다. 3,2 가 int a, int b 로 선언..

[정보처리기사] C언어 - 배열 포인터

배열포인터란? 배열의 시작 주소값을 저장할 수 있는 포인터 2차원 배열의 구조 배열 포인터의 선언 - 괄호로 묶어서 선언한다. - [숫자]는 "어떤 구조가 들어오든지 숫자만큼 자르겠다."로 해석하자 ex int(*in)[2]; int num[3] = {1,2,3}; in = num; int num[3] = {1,2,3}; num 100번지 101번지 102번지 100 1 2 3 이 상태에서 2개씩 자르겠다 1,2/ 3 / / / -> 물리적으로 자르는 것이 아니고 논리적으로 자르기 떄문에, 아래와 같이 행 대표주소는 연속성을 이어서 102번지로 들어간다. in = num; in 배열 행 대표주소 주소값 주소값 100번지 in[0] 100번지 1 2 in[1] 102번지 3 printf("%d₩n", in..

[정보처리기사] C언어 - 구조체, 포인터 구조체..

구조체란? 여러 변수들을 모아서, 하나의 객체를 구성할 때 사용하는 사용자 정의 타입의 객체 구조체의 구성 struct 구조체명 { 변수1; 변수2; }; ex. struct person { char *name; int age; }; struct person user1; // person이라는 구조체에 user1로 name과 age 인자를 가진 구조체를 생성할 것 user1.name = "chassi"; printf("%s", user1.name); 구조체 정의 및 사용 struct person { char *name; int age; } test; // test는 뒤이어 struct로 선언하지 않고 바로 생성 가능 test.name = "chassi" test.age = 33; printf("%s : ..

[정보처리기사] C언어 - 포인터 배열(배열 포인터와 포인터 배열 차이) feat. 문제로 강화하기

포인터 배열이란? 배열형태인데 배열 각각에 주소가 들어간다 즉, 배열의 요소가 포인터(메모리주소)로 이루어진 것 배열 포인터와 포인터 배열의 비교해보자 이제껏 배웠던 '배열 포인터' ex1. char a[3] = {'a','b','c'} a 배열 100번지 101번지 102번지 100번지 a[3] a b c printf("$s₩n", a); = abc. -> %s는 '문자열'을 출력하는 함수인데 null을 만날 때까지 출력한다. 그래서 주소값 100번지를 받아서 null 직전까지의 문자열 abc를 출력하게 된다. ex2. char *str = "Hello" str 100번지 101번지 102번지 103번지 104번지 105번지 100번지 H e l l o printf("%s₩n", str); = Hell..

[정보처리기사] C언어 - 2차원 배열과 포인터

지난 시간 1차원 배열 포인터를 배웠다면 https://accompani-i.tistory.com/206 [정보처리기사] C언어 - 배열과 포인터(배열에도 주소값이 있다) 포인터 변수는 주소를 가진다 배열도 주소를 가지는데 예를 들어 int a[5]로 배열을 선언하게 되면, a라는 변수가 메모리 어딘가에 만들어지고 메모리 상에 5개의 공간이 만들어지는데, 배열 a가 accompani-i.tistory.com 이번 시간에는 2차원 배열과 포인터를 학습해보자. ex. int a[3][2] = {{1,2},{3,4},{5,6}}; a에는 배열의 첫 번째 주소값이 들어가므로, 100이 들어가고 a 배열 행을 대표하는 번지 수 배열의 값[임의의 번지수] 배열의 값[임의의 번지수] 100번지 a[0] 100번지 1..

[정보처리기사] C언어 - 배열과 포인터(배열에도 주소값이 있다)

포인터 변수는 주소를 가진다 배열도 주소를 가지는데 예를 들어 int a[5]로 배열을 선언하게 되면, a라는 변수가 메모리 어딘가에 만들어지고 메모리 상에 5개의 공간이 만들어지는데, 배열 a가 가지는 주소는 배열의 [0] 즉, 첫 번째 주소와 같은 주소를 가진다. 다른 말로 a의 주소는 100이다 표로 나타내 보면 a 배열 메모리 주소 메모리 주소의 값 100 [0] 100 [1] 101 [2] 102 [3] 103 [4] 104 ex. #include int main(void){ int i; int a[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; int *ptr = a+3 for(i=0; i (조건을 만족하면) 2. 수행하는 작업을 한 후 3. 증감식을 수행한..

[정보처리기사] C언어 - scanf 와 변수(feat. 포인터 변수)

포인터에 대한 기초적인 개념은 https://accompani-i.tistory.com/204 [정보처리기사] C언어 - 포인터의 이해(feat. 포인터변수, 주소, 주소값) 포인터란? 메모리의 위치를 표현한 기호 메모리의 주소값을 표현한 변수 포인터의 핵심은 그림을 그리는 것 메모리를 우리 생활에 비유하자면, 메모리 주소는 우리가 현재 살고 있는 집의 번지 accompani-i.tistory.com 여기를 거쳤다가 오시고 오늘은 포인터 변수로 활용되는 scanf를 알아보도록 하겠습니다. scanf란? 사용자의 키보드로 입력받을 때 사용하는 함수 scanf의 형식 scanf("%d", 변수의 주소의 값); "%d" -> 어떤 값을 입력 받겠다. 변수의 주소의 값 -> ex. int b; 로 선언 했다면,..

[정보처리기사] C언어 - 포인터의 이해(feat. 포인터변수, 주소, 주소값)

포인터란? 메모리의 위치를 표현한 기호 메모리의 주소값을 표현한 변수 포인터의 핵심은 그림을 그리는 것 메모리를 우리 생활에 비유하자면, 메모리 주소는 우리가 현재 살고 있는 집의 번지수 메모리주소의 값은 그 주소에 살고있는 거주민으로 비유해볼 수 있다. 포인터 변수는 주소의 번지를 할당할 수 있다. 메모리 주소는 본인이 편한 숫자로 임의로 정한다. 위 그림처럼 포인터 변수영역, 일반 메모리 영역에 메모리 주소와 메모리 주소의 값 세 부분으로 나누어 그리고 시작하면 비교적 쉽게 접근 가능하다. 포인터 변수 선언 int *a; -> a라는 변수를 만들고 메모리와 상관 없이 변수 a를 만들어놓고 이 친구는 보통 변수 아니고 포인터 변수다. 주소값을 가지는 특징이 있다. *a = 10 -> *a는 a의 값이라..

반응형