C 썸네일형 리스트형 [5] 함수와 배열인수 함수에 배열을 인수로 전달하는 방법은 2가지가 있습니다. 1. 인수를 배열로 받기 2. 인수를 포인터로 받기 1. 인수를 배열로 받기 함수는 배열을 인수로 받을 수 있습니다. 배열이름 test를 함수에 전달했고, 함수에서 t[ ]로 포인터로 받았습니다. 이렇게하면, 함수 내에서 t[0], t[1],... 같이 각 요소를 쓸 수 있습니다. 2. 인수를 포인터로 받기 함수에서 인수를 받을 때 포인터로도 받을 수 있습니다. 밑줄 친 것과 같이 함수에서 인수를 받을 때, 배열 대신 포인터로 받았습니다. 이전과 마찬가지로 배열의 이름으로 첫번째 주소값을 넘깁니다. 배열의 요소에 접근할 때 배열과 인덱스를 사용하는 대신에 포인터의 역참조를 사용합니다. 역참조를 할 때 포인터에 덧셈을 했습니다. 이것은 어떤 의미일까.. 더보기 [4] 이중 포인터(포인터의 포인터) 포인터 변수라는 것은 주소를 저장하는 변수입니다. 그래서 포인터의 포인터는 "주소가 값으로 저장된 변수의 메모리 주소"입니다. 포인터의 원리를 알면 쉽게 생각할 수 있습니다. code-myself.tistory.com/10 포인터 이번에는 C언어의 포인터를 공부해 보겠습니다. 먼저, 포인터를 알아보기 전에 "어드레스"라는 것을 보겠습니다. 어드레스는 메모리의 주소. 즉, 주소 값입니다. 주소 값이란 변수 등이 들어가 code-myself.tistory.com 선언을 할 때는 아래와 같이 합니다. 포인터를 선언할 때 사용하는 *를 두 번 사용합니다. 이것을 간접 참조(역참조)할 때는 *를 하나 쓸 때마다 가리키는 주소의 값을 차례대로 나타냅니다. 이중 포인터 c를 1번 *로 참조할 때는 b의 값(주소 값).. 더보기 [3] 배열과 포인터의 관계 여러 개의 변수를 쉽게 다루기 위한 것이 배열이기 때문에 배열도 변수처럼 메모리에 저장이 됩니다. 그러므로 주소 값이 있고, 포인터를 사용할 수 있습니다. 이번에는 배열과 포인터의 관계를 알아보도록 하겠습니다. 아래 3가지를 중심으로 설명을 하겠습니다. 1. &test[i]로 각 요소의 주소에 접근 2. 배열이름으로 주소 값 전달 3. 배열이름 포인터에 다른 값은 대입 불가 &test[i]로 각 요소의 주소에 접근 배열의 각 요소의 주소 값은 제목처럼 일반적인 배열의 요소에 &(어드레스 연산자)를 붙여서 접근할 수 있습니다. 배열 이름으로 주소 값 전달 배열 이름만 사용함으로써 배열이 시작되는 첫번째 요소의 주소값. 즉, &test[0]과 같은 역할을 할 수 있습니다. 배열이름 포인터에 다른 값은 대입 .. 더보기 [2] 인수와 포인터 아마 공부를 하면서도 어렵고 복잡한 내용을 공부하다 보면 내가 왜 이걸 해야 하지?라는 의문이 모두들 한 번씩을 들었을 거라고 생각합니다. 어디에 어떻게 어떤 상황에 쓰이는지를 아는 것은 내가 이것을 배워야 할 강한 동기가 되기도 하죠. 포인터에도 수많은 활용방법이 있겠지만, 이번에는 함수와 연관 지어서 생각해 보겠습니다. 만약 포인터를 쓰지 않고 두 변수안에 들어있는 값을 바꿔주는 함수를 만든다고 하면, 어떻게 만들 수 있을까요? 아마 굉장히 복잡하고, 쉽게는 만들 수 없을 것 같습니다. 왜냐하면, 인수를 전달해서 함수 내부에서 값을 바꿔도 함수 밖의 원래 변수에는 영향을 미치지 못합니다. 인수를 전달할 때 값을 직접 전달하는 게 아니라 복사된 값을 전달하기 때문입니다. 이런 전달 방식을 "값 전달"이.. 더보기 [1] 포인터 이번에는 C언어의 포인터를 공부해 보겠습니다. 먼저, 포인터를 알아보기 전에 "어드레스"라는 것을 보겠습니다. 어드레스는 메모리의 주소. 즉, 주소 값입니다. 주소 값이란 변수 등이 들어가 있는 메모리의 위치를 말합니다. 주소 값을 나타낼 때는 어드레스 연산자 "&"를 사용합니다. 주소 값은 보통 16진수 같은 수치로 나타내고, 이 값은 사용하는 환경에 따라 달라질 수 있습니다. 그렇다면 주소값 접근이 왜 필요할까요? 앞으로 차차 알아보겠지만, 주소 값에 직접 제어하면 메모리를 아끼거나 함수 내부에서 실인수 값을 직접 변경할 수 있게 되는 등 효율적으로 짤 수 있게 됩니다. 이 주소 값을 다루기 위해서는 "포인터"라는 것을 사용합니다. 포인터는 주소값을 저장할 수 있는 특별한 변수입니다. 포인터 사용방법.. 더보기 [0] C언어를 시작하며 C언어는 대학교 교양 강의로 들었던 것이 처음이었고, 그 이후로 진로를 고민하면서 조금씩 훑어보는 정도로만 공부를 했었습니다. C++도 그렇고 JAVA도 그렇죠. 하지만 갈수록 지루해지고, 무의미하게 느껴지는 탓에 JAVA는 거의 이해하지도 못하고 읽기만 하는 지경에 놓였습니다. 그렇게 C,C++,JAVA를 놓은지 몇 년이 지나고 유니티를 만지면서 C#을 공부하게 되었습니다. 하지만 C++의 클래스나 JAVA의 개념이 하나도 없는 상태에서 delegate나 interface 등등의 기술들을 공부하자니 뭔가 자꾸만 중간 개념이 비어있는 느낌이 들었습니다. 당연한 듯이 설명이 되지만 저한테는 전혀 당연하지 않았습니다. 그래서 어떤 방법으로 이 빈 느낌을 채워야할지 고민을 해보다가 예전에 공부했던 언어들을 다.. 더보기 이전 1 2 다음