기초 특강) C언어 완전 정복하기 3탄 - 데이터 타입과 포인터
2018-01-05 10:30~11:59
전기전자 평생교육원 / 정재준 대표
홍*표2018-01-05 오전 11:08:57
스택에 들어가는 순서는 b[0]부터 들어가는 것... 그것이 순차적으로 그 다음 데이터가 들어오면 하나씩 아래로 밀려서 순차적으로 쌓이게 되는 것으로 이해하고 있는데요. 어셈블리어 프로그램 할 때 그렇게 되던데요.kernel2018.01.05
네, 맞습니다.김*규2018-01-05 오전 11:05:15
변수로 접근하는 방법과, 포인터로 접근하는 방법의 속도차이가 있다고 하셨습니다만, 변수는 선언시 어느주소에 어떻게 배정될지 모른다는것이 문제이고 포인터는 원하는 주소에 직접 접근할 수 있습니다. 이것은 자료구조적으로 보았을때 자료구조 관리를 용이하게 하기위한 메모리 관리의 차이이지 속도의 차이는아닌것 같은데요, 어떻게 생각하시는지요.kernel2018.01.05
네, 정확히 지적해 주셨습니다. 자료구조가 중요합니다. 주소연산에 의한 메모리 접근은 어차피 컴파일러가 합니다.무명2018-01-05 오전 11:04:06
pa++은 주소가 증거하는 거니까 내부의 data의 증가하고는 아무 상관이 없는건가요?kernel2018.01.05
데이터가 있는 위치, 즉 주소가 만 변경되는 것이니 데이터는 변화지 않습니다.홍*표2018-01-05 오전 11:03:29
내부 메모리 영역은 C 컴파일러가 알아서 할당을 해준다고 하더라도, 외부 메모리의 경우 주소를 어떻게 할당해야 하는지... 학교 다닐 때 배운 것같은데 기억이 안나는군요.kernel2018.01.05
동일한 질문이라서 스킵할게요.홍*표2018-01-05 오전 11:02:57
왜 질문이 안올라가죠?e4ds22018.01.05
질문은 정상적으로 접수되고 있습니다. 해당 질문에 답변이 달리면 한번에 채팅창에 게시되니 참고 부탁드리며, 이는 채팅창의 혼란을 막기 위함이니 양해 부탁 드리겠습니다!홍*표2018-01-05 오전 11:01:40
내부 메모리 영역은 C 컴파일러가 알아서 할당을 해준다고 하더라도, 외부 메모리의 경우 주소를 어떻게 할당해야 하는지... 학교 다닐 때 배운 것같은데 기억이 안나는군요.kernel2018.01.05
질문하신 내용으로 보아서 내부 메모리는 MCU내에 있는 것이고, 외부 메모리는 MCU 바깥쪽에 있는 Flash 메모리를 언급하신듯 합니다. 보통 아트메가, 아두이노.. 이런 것들이 이렇게 되어 있는데, 해당 데이터시트를 보면 16진수 형태의 주소가 있습니다. 포인터 변수에서 이 주소를 찍어보면 알 수 있습니다.홍*표2018-01-05 오전 10:59:26
포인터에 대한 부분은 문법적으로는 이해가 되는데 정작 외부 플래시메모리를 사용할 때에는 쉽지 않다는 것이... ㅜㅜ 외부 메모리를 사용할 때에는 메모리의 주소를 물리적으로 할당을 어떻게 해야 하는지 학교 다닐 때에 배운 것같은데 실제 MCU와 연결했을 때는 어떻게 해야 하는지...kernel2018.01.05
C언어에서 포인터에 대한 문법을 예제를 통해서 많이 연습하시면 되겠습니다.조*영2018-01-05 오전 10:59:18
sizeof(b) 의 경우 b가 배열int b[5]의 포인터임으로 4bytes가 리턴되는 건가요? 그럼 배열의 전체 크기를 알 수 있는 방법는 없을까요?kernel2018.01.05
sizeof(b)가 배열의 전체크기가 됩니다. 20바이트가 리턴됩니다.지*호2018-01-05 오전 10:57:56
[질문]기존의 어셈블리 언어를 조금 더 쉽고 간략하게 하기 위해 함수를 통한 언어를 C언어라고 보아도 될지요?kernel2018.01.05
파이썬, 자바, C#, C언어 모두 컴파일러에 의해서 어셈블리 기계어로 변환되어 실행되는데, C언어가 어셈블리 기계어를 생성할때 좀더 최적화 된다고 이해하셔도 될듯합니다.김*희2018-01-05 오전 10:54:17
포인터변수를 통한 데이터 접근 방법과 일반 변수로 데이터를 접근하는 방법이 처리하는 속도가 차이가 난다면 차이를 느끼려면 어느정도의 무게가 있는 프로그램코드이여 하는지 알고 싶습니다.kernel2018.01.05
문자열 복사 함수인 strcpy에서 대량의 문자열을 s1[i++] = s2[j++]; 로 동작시키는 경우와 *s1++ = *s2++; 동작시켜보면 시간차이가 많이날듯 합니다.