부산IT학원/스마트컨트롤러
-
20140327 (포인터, 배열, call by address, call by value)부산IT학원/스마트컨트롤러 2014. 3. 27. 15:20
29일차 -------------------------------------- 포 인 터 , 배 열 --------------------------------------- --------------------------- --- 포인터 사용시 주의할 점. int iNum = 10; double * dpNum = &iNum; // Warning! double dNum = 10.5; int * ipNum = &dNum; // Warning! 같은 포인터 타입이기에 Error는 안나서 실행은 되지만 다른 자료형(실수, 정수)이므로 Warning입니다. 상황에 따라 어떤 오류가 발생할지는 모르니 잘못된 것입니다. int * ipNum; *ipNum = 1000; // Warning! ipNum에 주소값도 정해져..
-
20140326 (배열)부산IT학원/스마트컨트롤러 2014. 3. 26. 17:35
28일차 ---------------- Array ( 배 열 ) ---------------- - 배열 초기화 char caString[256] = ""; char caString[256] = {0}; 둘다 0(NULL)로 초기화 된다. - Call by Address, Call by Value 이것은 함수에 인수를 다룰 때 쓰는 방법이다. Call by Address : 주소를 넘겨 호출. Call by Value : 값을 넘겨 호출. ex) 예제 소스 #include void CallByValue(int, int); void CallByAddress(int *, int *); int main() { int iNum1 = 10; int iNum2 = 100; CallByValue(iNum1, iNum2..
-
20140325 (배열, 문자열)부산IT학원/스마트컨트롤러 2014. 3. 25. 17:35
27일차 -------------- Array ( 배열 ) -------------- 어제에 이어 계속 배열을 배웠다. 바로 예제 소스를 보자. ex) 예제 소스 #include int main() { int arr1[5] = {1,2,3,4,5}; int arr2[] = {1,2,3,4,5,6,7}; int arr3[15] = {1,2}; int ar1Len; int ar2Len; int ar3Len; int iCnt; printf("배열 arr1의 크기 : %d \n", sizeof(arr1) ); printf("배열 arr2의 크기 : %d \n", sizeof(arr2) ); printf("배열 arr3의 크기 : %d \n", sizeof(arr3) ); ar1Len = sizeof(arr1) ..
-
20140324 (전역변수, 메모리 구조, 재귀함수)부산IT학원/스마트컨트롤러 2014. 3. 24. 17:35
26일차 -------------------- 전 역 변 수 -------------------- - 지역변수와 다르게 어디서든 읽기 쓰기가 가능한 변수. - 어떤 함수에서 쓰기 가능하기 위해 컴파일러가 제일 먼저 읽어야 하니 맨(include 밑에) 위에 선언한다. - 기본적으로 0으로 초기화 돼있음. - 변수가 만들어 지는 때 지역변수 : Run Time 전역변수 : Compile Time - 지역변수는 Load 하면서 Mem에 할당됨. - 전역변수는 컴파일당시에 생성되기 때문에 실행파일에 할당되어 있음. ex) 예제 소스 #include void Add(int iVal); int iNum; int iNum1 = 10; int iNum2; int iNum3 = 20; int iNum4; int iNu..
-
20140321 (함수, 지역변수)부산IT학원/스마트컨트롤러 2014. 3. 21. 16:05
25일차 -------------------- Function ( 함 수 ) -------------------- - 어제 보았듯이 어떤 기능을 하는 역할. - int Add(); 이런 형태는 함수의 원형( prototype, interface ) 라고 한다. - int Add() { A } 이런 형태는 함수의 정의이다. 뭐 설명은 어려운데 예제를 보면 쉽다. 예제를 보자. #include int Add(int iNum1, int iNum2); // 함수 선언, 원형 /* int Add(int iNum1, int iNum2) // 이렇게 main 위에 와도 괜찮다. { // 선언, 정의? 다 같이 한다? int iResult = iNum1 + iNum2; return iResult; } */ int ma..
-
20140320 (포인터, Hexa View, 함수)부산IT학원/스마트컨트롤러 2014. 3. 20. 17:52
24일차 ---------------- 포 인 터 ---------------- - float형이 메모리에 IEEE 754방식으로 저장되어 있는지 확인해 보자 소스 코드 #include int main() { float fNum = 3.25; unsigned char * ucpData = (unsigned char *)&fNum; printf("%02X \n", *ucpData); printf("%02X \n", *(ucpData+1)); printf("%02X \n", *(ucpData+2)); printf("%02X \n", *(ucpData+3)); printf("%.3f \n", fNum); printf("\n"); *(ucpData+0) = 0x00; *(ucpData+1) = 0x00; *(u..
-
20140319 (포인터, little endian, big endian, 포인터 연산)부산IT학원/스마트컨트롤러 2014. 3. 19. 17:46
23일차 ______________ 포 인 터 -------------- - 어제 이어 계속 포인터 포인터의 크기는 4byte이다. 포인터는 메모리의 주소를 저장하고 있기 때문에 메모리의 크기 만큼만 크기가 되면 된다. 32bit 컴퓨터에 메모리의 최대 크기가 약 4G가 최고이니 그에 맞게 32bit -> 4byte 이다. 만약 64bit 컴퓨터라면 아마 8byte가 되겠지..? 확인해 봐야 한다고 배웠다. ---------------------------- little endian, big endian ---------------------------- - CPU 마다 메모리 저장 방식이 다른데 little endian방식과 big endian방식이 있다. 설명을 위해 예제를 보자. 위와 같이 1byt..
-
20140318 (포인터, &, *, (int *) )부산IT학원/스마트컨트롤러 2014. 3. 18. 17:22
22일차 --------------- 포 인 터 --------------- - 주소 값을 저장하는 변수. 기호는 * 로 쓴다. 지금까지 배운 * 기호의 역할이 4가지가 있는데 1. * : 곱셈 2. (type *) : 캐스팅 3. * : 주소를 따라가 그 곳에 저장된 값을 가리킴. 4. * : 포인터 변수 선언. 1번은 아는거고 2번에 대해서 우선 알아보자 먼저 전에 배웠던 & (Ampersand)를 변수 앞에 붙이면 그 변수의 주소값을 나타낸다고 배웠다. 2번, 3번을 보면 &과는 다른 값을 볼 수 있다. 다음 예제 소스를 보자 ex) 예제 소스 #include int main() { int iNum = 0; // &iNum = 100; // 주소상수 = 상수 // --> Error! // 0x12F..