본문 바로가기

C언어

(3)
[C언어] call by value와 call by reference 함수에 매개변수로 값을 넘겨주는 방식에는 두 가지가 있다. 1. call by value(값에 의한 호출): 매개변수를 통해 값만 넘겨준다. 즉, 원본 값을 복사한 복사 값만 넘겨준다. 2. call by reference(참조에 의한 호출): 매개변수를 통해 주소값을 넘겨준다. 즉, 원본 자체를 넘겨준다. 두 변수 a, b의 값을 바꾸는 swap함수로 이해해보자. #include void swap1(int, int); //call by value void swap2(int*, int*); //call by reference int main(void) { int a = 3, b = 8; int* pa = &a; int* pb = &b; swap1(a, b); printf("a:%d b:%d\n", a, ..
[C언어] 포인터 - 개념, *연산자, 배열, 동적할당 1. 포인터 개념 포인터란? 어떠한 변수의 주소를 저장하는 자료형이다. 포인터의 크기는 운영체제의 bit 수에 따라 달라진다. 운영체제가 32bit라면 포인터는 4byte, 운영체제가 64bit라면 포인터는 8byte의 고정 크기를 가진다. 2. 포인터 연산자 포인터는 별(*)을 붙여 사용한다. ①(자료형)(*) (변수) ex) int* pa = &a; 주소를 저장하는 변수의 선언 방법이다. *은 자료형 쪽에 붙일 수도 있고 변수 쪽에 붙일 수도 있다. 어디에 *을 붙이는지는 개발자의 취향 차이. ②(*)(변수) ex) *pa = 8; 해당 주소에 들어있는 원본 값에 접근하는 방법이다. 변수 앞에 별을 붙이면 주소를 저장하는 변수 pa의 원본 값 a에 접근할 수 있다. (아래 예제 코드 참고) #incl..
[C언어] 구조체 - 개념, 구조체 선언, 변수 선언 1. 구조체의 개념 구조체란 서로 관련이 있는 임의의 자료형의 값들로 구성된 사용자 정의 타입이다. 즉, 관련 있는 자료라면 자료형이 달라도 상관없다. 자바와 파이썬 같은 객체지향 언어의 클래스와 성격이 비슷하다고 한다. 2. 구조체 선언과 변수 선언 다음은 은행 정보와 관련된 구조체 선언 예시이다. 은행 정보에는 예금주, 계좌번호, 잔액, 이율, 비밀번호가 들어갈 것이다. #include struct account { char name[20]; //예금주 명 (19자리까지 저장가능) int account_number; //계좌번호 double balance; //잔액 double interest; //이율 int password; //비밀번호 }myaccount; //main 밖에 적었으므로 전역변수 ..