반응형

iOS 146

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

[정보처리기사] 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. 증감식을 수행한..

반응형