본문 바로가기

C 언어/임베디드 C

어셈블리 기본소스 보호되어 있는 글입니다. 더보기
메모리 저장주소 보기 및 활용 //각 타입당 어떤식으로 주소가 저장되는가 알아보기 #include int main() { int A = 0x12345678; //4byte공간 stack 지정 int B = 0x9abcdef0; char C; int D; printf("A의 주소 %p\n", &A); printf("B의 주소 %p\n", &B); printf("C의 주소 %p\n", &C); printf("D의 주소 %p\n", &D); printf("main의 주소 %p\n", main); //함수도 주소가 있으며, &는 쓰지 않아도 된다. printf("printf의 주소 %p\n", printf); return 0; } 결과 A의 주소 0xbffff848 B의 주소 0xbffff844 C의 주소 0xbffff843 D의 주소 0x.. 더보기
메모리내 주소 저장방식 CODE -> 함수에 대한 기계어 코드가 들어감 DATA -> 초기값있는 전역변수,배열,static으로 선언된 변수가 들어감 BSS -> 초기값없는 전역변수,배열,static으로 선언된 변수가 들어감 HEAP -> 동적할당(malloc)으로 할당된 변수가 들어감 STACK -> 블록내에서 할당된 변수가 들어감 하나의 프로세스가 점유하는 메모리 영역은 물리적 메모리(Physical Memory) 영역과 SWAP 영역에서 동시에 구성되는데, 액티브하게 실행되는 일부가 Page In & Page Out 과정을 통하여 물리적 메모리 영역을 이용하는 것이다. 가상 메모리 기법은 제한된 물리적 메모리를 프로세스가 직접 이용하는 것보다 더 많은 메모리를 프로세스에게 제공하기 위하여 사용되는 기법이다. 프로세스가 이용.. 더보기
return문 //양의 정수를 입력받아 그 숫자만큼 별표를 출력한다. 입력값이 50이상이면 50개의 별표만 출력한다. 입력값이 0이면 프로그램은 종료된다. 입력값이 음수일 경우 다시 입력할 수 있게 작성되었다. #include void printstar(int n); int checknum(int n); int getnum(); int main() { int num; num = getnum(); while(num !=0) { num = checknum(num); printstar(num); num = getnum(); } return 0; } int getnum() { int num; printf("Enter a number : "); scanf("%d", &num); while(num50) return(50); el.. 더보기
지역변수 //같은 이름의 지역변수가 두 함수에서 사용되는 프로그램의 예 #include int plus(int first, int second); //plus() 함수선언 int minus(int first, int second); //minus() 함수선언 int main() { int result; result = plus(27, 24); printf("the sum of two number is %d\n", result); result = minus(27, 24); printf("the difference of two number is %d\n", result); return 0; } int plus(int first, int second) //plus() 함수정의 { int result; result = .. 더보기