반응형

읏차, IT차 326

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

ex1 #include void main(void) { int a = 10, b = 20, c = 30, d = 40; change(&a, &b, c, d); printf("a = %d, b= %d, c = %d, d = %d, a,b,c,d); } void change(int *px, int *py, int pc, int pd) { *px = *py + pd; *py = pc + pd; pc = *px + pd; pd = *px + *py; } 해설 초기값 a b c d 임의의 주소 100번지 200번지 300번지 400번지 주소값 10 20 30 40 change(&a, &b, c, d); -> 100번지 200번지, 30, 40 값을 들고 함수로 넘어간다 void change(int *px, int..

[정보처리기사] C언어 - 함수가 주소를 리턴하는 경우.

ex. #include int main() { int i; int x = 10; int *p; int a[100] for(i = 0; i a[0] = 0 *10, a[1] = 1*10 --- 연산을 진행 i a[i] = i * 10 0 0 1 10 2 20 3 30 4 40 --- --- 99 990 a 100번지 101번지 102번지 103번지 104번지 --- 199번지 100번지 1 2 3 4 5 --- 100 i=0 0 i=1 10 i=2 20 i=3 30 i=4 40 i=99 990 p = func(x, a); -> 10, 100번지 들고 func함수 호출 int *func(int a, int *x) a = a + 10; -> a에 20 할당 x = x + 1; -> x에 101번지 할당 *x ..

[정보처리기사] C언어 - 함수와 변수의 유효범위

#include int a=1, b=2, c=3; int f(void); int main(void) { printf("%3d₩n", f()); printf("%3d%3d%3d₩n", a, b, c); return 0; } int f(void){ int b, c; a=b=c=4; return(a+b+c); } 해설 a,b,c는 전역변수이다. int f(void)의 의미-> main함수 밑에 f라는 함수가 있다고 알려주는 함수.(큰 의미 없음) main : 전역변수 a b c 1 2 3 f내부 함수에 없으므로 전역변수 a에 4할당 4 f : 함수 내부는 지역변수 b c 4 4 a=b=c=4; 4와 가장 가까운 c부터 4를 할당 c에 4할당 b에 4할당 a에 4할당인데 함수 내부에 a가 없으므로 전역변수 a값..

[정보처리기사] 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..

반응형