기초 특강) C언어 완전 정복하기 4탄 - 다차원 배열의 진실
2018-01-12 08:50~12:54
전기전자 평생교육원 / 정재준 대표
이*진2018-01-12 오전 11:16:10
혹시, 프로그래밍 중에 해깔리지 않도록 지원해주려는 목적의, 포인트 상태를 그림으로 나타내주는 툴은 없나요?kernel2018.01.12
저는 예전부터 그냥 텍스트로 공부를 해서 잘 모르겠습니다만, 요즘 좋은 툴들이 많은듯 합니다. 인터넷 검색을 활용해 보셔도 좋겠습니다.김*열2018-01-12 오전 11:08:15
[질문] malloc 시 포인터 주소와 데이터 사이즈 계산을 쉽게 할 수 있는 팁이 있나요?kernel2018.01.12
int *pm = malloc(24); 하면 24바이트 공간이 메모리에 잡힙니다. 시작주소는 pm입니다. 크기는 sizeof(*pm)==24 이렇게 가져옵니다.이*진2018-01-12 오전 11:05:20
a[2][3][4] 의 경우 a번지로 부터 시작하는 메모리에 데이터 값이 저장되는데 있어서, 데이터 값이 저장되는 것은 알겠습니다. 그런데 그들의 메모리 포인트가 따로 저장되나요?kernel2018.01.12
배열 a가 정의 되면 메모리에 쭉~ 배치가 되고 포인터는 배치되어 있는 주소이기 때문에 그냥 인데스 연산되어서 접근합니다. a+1, a+2, a+3... 이런 식입니다.김*열2018-01-12 오전 11:03:59
항상 함수포인터에서부터 헷갈리네요.kernel2018.01.12
함수 포인터는 다음주 금요일에 강의 될 예정입니다. 참고로 함수 포인터 타입은 (*fp)() 이렇게 표현됩니다.백*현2018-01-12 오전 10:59:42
배열을 포인터로 인텍싱 할때 캐스트 연산자를 어떻게 하는지 설명해주시면 좋을 거 같습니다. 여러개의 캐스트 연산자를 사용해야 하는지요?kernel2018.01.12
32비트 아키텍쳐에서 주소(포인터)를 담고 있는 포인터변수의 크기는 모두 4바이트 입니다. 캐스트 연산은 주소안에 있는 데이터를 참조할때 사용하면 되됩니다. (char *), (int *), (float *), (double *)... 이런식으로 데이터을 가져올때 데이터 크기를 결정해서 가져오게 됩니다.김*균2018-01-12 오전 10:54:23
a[2]=*(a+2) 가 되고, 그러면 *(2+a) = 2[a]가 가능한건가요? 개념상으로만 봤을때.kernel2018.01.12
2[a] 배열을 이렇게 하면 문법(syntax) 에러가 날듯 합니다. *(2+a) 이 표현은 될듯도 한데, 저도 테스트 해봐야 할듯 합니다.박*홍2018-01-12 오전 10:51:20
넵 아마 다차원 행렬식을 MATLAB 으로 한 경험 때문에 다른툴이라고 표현 했지만 포인터 개념이 있는 C나 C# 이 정답일거 같습니다.kernel2018.01.12
네~ 맞습니다. 매트랩도 배열 및 행렬연산을 효율적으로 하는 것으로 알고 있습니다. 그리고 기회되신다면 머신러닝 알고리즘도 2차원 배열 공간을 행렬연산 하는 형태로 전개되기 때문에, 배열 개념을 잘 알고 있으면 좋을듯 합니다.박*홍2018-01-12 오전 10:46:12
3차 이상이면 C 말고 다른언어를 사용해야하지 않을까요?kernel2018.01.12
배열은 모든 언어에서 공통적으로 사용하는 자료구조(Data Type)입니다. 굳이 개발언어에 연연하지 않아도 될듯하고, 배열도 메모리 공간이기 때문에 주소(포인터)로 직접 참조하고 싶다면 C언어가 오히려 효율적일 수 있습니다.김*균2018-01-12 오전 10:45:59
2차 이상 개념이 복잡하게 이해했었는데.. 쉽게 이해가 되는것 같습니다.kernel2018.01.12
쉽게 이해하시는듯 하여 저도 보람이 되네요~ 저도 오랜 경험을 통해서 느낀것을 요즘 책으로 정리하고 공유하는 작업들을 많이 하고 있습니다. 지속적이 관심과 성원 부탁드립니다.박*홍2018-01-12 오전 10:45:45
다차원 배열을 3차 이상을 사용해본 경험은 없습니다만kernel2018.01.12
네~ 보통 3차 정도까지 사용합니다~