코로 넘어져도 헤딩만 하면 그만

깨알 C언어 31강-40강 본문

정보처리기사

깨알 C언어 31강-40강

꼬드리 2024. 8. 26. 17:56

 

🚩31-34강. 포인터 배열

포인터 배열: 배열의 요소가 포인터(메모리주소)로 이루어진 것. 그 배열의 각각의 것들이 주소값을 갖고 있다.

 

💡기존까지 사용하던 배열과 포인터:

char a[3] = {'a', 'b', 'c'} 
a는 100번지를 갖게 된다. 
%s는 주솟값. //abc



문자열을 포인터 형태로 저장하는 경우. 
char *str = "Hello";
str은 메모리의 주솟값이니까 100번지가 str에 갖게 된다. 
printf("%sWn", str); //Hello

 

 

💡포인터 배열

char *student[3] = {"aaa", "bbb", "ccc"};
student는 100번지를 저장하고 각각의 3개의 칸에는 주소값이 들어간다. 
즉 각각의 칸에 20, 30, 40 주소값이 들어간다. 
20번지에 aaa, 30번지에 bbb, 40번지에 ccc(번지 값은 가상)

 

30이라는 주소값의 "bbb"가 출력된다.

 

33강.

1 -10 14

 

**arr 은 arr의 값의 값 => 12

 

 

35장. 구조체

구조체: 여러 변수를 모아, 하나의 객체를 구성할 때 사용하는 사용자 정의 타입 객체.

struct 구조체 명 {
	변수1;
    변수2;
}

//예시
struct person {
    char *name;
    int age;
}

포인터 변수에 담을 때는 . 대신 ->를 사용한다.

p-> age = 40;

300

 

 

36장. 배열 포인터

극강의 난이도고... 1문제 나왔었음... 그냥 틀리라고 낸 문제인듯?

배열 포인터: 그냥 하나의 포인터, 알아서 잘라버림

물리적으론 그대로, 논리적으로 잘림
지가 알아서 논리적으로 4개씩 잘라버린다.
malloc는 동적 메모리 할당. 3*3만큼 4byte의 배열을 만든다.

 

 

37장. 함수

함수: 반복적인 수행을 정의해두는 작은 프로그램 단위.

반환타입 함수명(인자){
	수행할 작업
}

int sum(int a, int b){
	int c= a+b;
    return c;
}

int data = sum(10,20);
printf("%d", data);

개별의 모듈이 되기 때문에 응집도는 높이고 결합도는 낮춰야 되는 것. 

 

 

38장. 함수와 반복문

 

 

 

39장. 함수에 주소 전달(1)

call by value / call by reference : 값으로 호출, 그 외 기타...주소값 등으로 호출

*i는 i의 값. 10에 +5를 해서 15로 바뀜. ++j 우선 계산함. 정답: 51 15 20

 

 

40장. 함수와 변수의 유효범위

변수를 참조할 때는, 나랑 가장 가까이 있는 것을 참조한다. (스코프)

나랑 가장 가까이 있는 b, c

- %3d는 정수 출력 시 최소 3칸의 공간을 지정한다. 숫자의 자릿수가 지정된 너비보다 작을 경우, 왼쪽에 공백을 추가하여 맞춰준다.

Comments