본문 바로가기

C

(3)
Call by Value and Call By Reference 메모리 직접 접근이 가능한 소프트웨어 언어의 함수 호출 방법은 두 가지입니다. 하나는 call by value이고, 하나는 call by reference입니다. 자세한 개념은 전공서적이나 위키피디아를 통해서 습득하시는 것으로 하고, 이 글에는 간단한 설명과 예제가 따라옵니다. call by value는 입력 아귀먼트를 복사하는 함수입니다. 입력 아귀 먼트와 같은 데이터형의 지역 변수를 만들고, 값을 복사합니다. call by reference는 입력 아귀먼트의 주소 값을 참조합니다. 따라서 호출된 함수에서 아귀 먼트의 값을 변경하면, 호출 한 함수에서도 변경됩니다. 포인터를 전송하는 것과 같죠. 그럼 설명은 요렇게 간단하게 마치고, 예제로 넘어 가겠습니다. #include #include using n..
배열의 초기화 ( memset) 일반적인 컴퓨팅 디바이스에서 배열의 초기화는 필요 없는 경우가 많습니다. 소프트웨어 엔지니어가 신경 쓰지 않아도 알아서 0으로 초기화해주기도 하고, 알고리즘 구조상 필요 없는 경우도 많습니다. 하지만 만약 Arm과 같은 프로세서를 이용한다면 특별히 초기화에 신경 써 줄 필요가 있기도 하고, 사실 초기화 시간이 오래 걸리는 작업도 아니기에 해주는 게 좋습니다. 먼저 C와 C++에서 모두 쓸수 있는 방법으로 시작하죠. 배열을 초기화하는 가장 간단한 방식은 아래 코드와 같이 반복문으로 초기화하는 거죠. 간단하고 가독성도 높습니다. 무엇보다 아래 코드에서와 같이 원하는 값으로 쉽게 설정할 수 있습니다.(input) #include using namespace std; const int N = 1024; int ..
전역변수와 지역변수가 같은 이름 일때 전역변수에 접근하기. C언어를 배우기 시작해서 중반부에 들어 가면 변수의 접근범위에 대해 배우게 되는데요.전역, 지역, static, extern등을 배우게 됩니다. 이중에서 이번 주제는 딱 두개 전역과 지역 입니다. 일단 두가지의 변수의 범위에 대해서는 배웠다는 전제하에 써내려 가겠습니다. #include int a = 1; int main(){ printf("%d\n", a); { int a = 2; printf("%d\n", a); } printf("%d\n", a); return 0; } 위 의 코드에서 결과물은121이죠. 첫번째와 세번째는 전역 변수 a에 접근한거고 두번째는 지역변수 a에 접근한 결과 입니다. 하지만 만약 2번째에서도 전역변수에 접근하고 싶다면 어떻게 해야 할까요. 일반적인 문법으로 c언어에서는 불가..