Programming (136) 썸네일형 리스트형 EXE 파일의 실행 1. EXE 파일의 실행 EXE 파일은 일반적으로 하드디스크에 기록된 하나의 파일이다. EXE 파일을 더블 클릭하면 이 파일의 내용이 메모리에 적재(load)되어 실행되는 것이다. 네이티브 코드에서의 변수 참조는 데이터가 저장된 메모리 주소를 참조하는 명령어를 실행함으로써 이루어진다. 그리고 함수 호출은 프로그램의 흐름을 함수가 저장된 위치의 시작주소로 바꿈으로써 이루어진다. EXE 파일은 프로그램으로서 네이티브 코드의 완성된 형태지만 변수나 함수의 메모리 상의 물리적 위치까지 결정하는 것은 아니다. 윈도우와 같이 멀티 태스킹이 가능한 환경에서는 프로그램의 변수나 함수가 저장된 위치가 실행할 때마다 바뀐다. 그렇다면 변수와 함수의 주소는 어떻게 결정되는 걸까? EXE 파일에는 변수와 함수의 임시 메모리 .. 문자열 길이 측정, 복사, 연결 함수 1. 문자열의 길이를 측정하는 함수 #include size_t strlen(const char * s); 매개변수로 받은 문자열 s 의 길이를 size_t 형으로 반환한다. 문자열의 길이이므로 널 문자는 제외한 길이를 반환한다. 주의할 점은 stdio.h가 아닌 string.h에 선언되어 있으므로 #include 를 코드 앞 부분에 작성해야 한다는 것이다. .h 파일은 헤더 파일(header file)의 확장자명으로, 함수나 변수, 상수들이 선언되어 있는 파일이다. size_t 는 보통 다음과 같이 선언되어 unsigned int 를 의미한다. typedef unsigned int size_t; 아직은 typedef 라는 선언을 통해 unsigned int 자료형을 unsigned int 라는 이름 대.. 자바에서의 배열 선언 및 초기화 기본적으로 선언은 다음의 세 가지 형식이다. ① int[] arr = new int[3]; ② int[] arr = ; ③ int[] arr = new int[] ; ②, ③의 경우 배열의 길이는 자동으로 5로 정해진다. 주의할 점은 배열도 객체라는 것. 때문에 다음 코드는 NullPointerException을 발생시킨다. int[] arr; arr[3] = 5; 배열 객체를 참조할 변수( arr )만 생성했을 뿐, 실제로 배열 객체를 참조하고 있지는 않다. 따라서 arr[3] 과 같이 배열의 요소에 접근한다는 것은 당연히 불가능하다. 그리고 sizeof 연산자를 통해 sizeof(ARRAY) / sizeof(TYPE) 로 배열의 길이를 계산하는 C언어와 달리 Java는 배열이 객체고, 객체 안에 배열.. [BAEKJOON] 1929번 1234567891011121314151617181920212223242526272829303132333435363738394041import java.util.Scanner; public class Main { private final static int SIZE = 1000000; public static void main(String[] args) { run(); } public static void run() { boolean[] isComp = new boolean[SIZE]; int i, j; Scanner sc = new Scanner(System.in); isComp[0] = isComp[1] = true; for (i = 2; i [BAEKJOON] 1475번 1234567891011121314151617181920212223242526272829303132333435363738#include int run(); int main(){ return run();} int run(){ int n; int temp; int i; int max = 0; int arr[9] = { 0 }; scanf("%d", &n); do { temp = n % 10; n /= 10; if (temp == 9) { ++(arr[6]); } else { ++(arr[temp]); } } while (n); arr[6] = (arr[6] / 2) + (arr[6] % 2); for (i = 0; i 문자열 입출력 함수 1. 문자열 출력 함수 다음의 두 가지가 있다. int puts(const char* s); int fputs(const char* s, FILE* stream); 매개변수로 전달된 문자열 s 를 출력한다. 엄밀히 말하면 s 는 char형 포인터 변수지만, 문자열은 문자 배열로 표현되며 배열의 이름은 배열의 시작 주소이므로 s 에 문자열 이름을 전달할 수 있다. 호출이 성공하면 puts 함수는 0을, fputs 함수는 0 이상의 정수를 반환하고, 호출이 실패하면 EOF를 반환한다. 즉 음수가 아닌 값이 반환되었다는 것은 에러가 발생하지 않았다는 뜻. 참고로 puts 함수는 문자열을 출력할 때 자동으로 끝에 개행 문자가 삽입되지만 fputs 함수는 그렇지 않다. 또한 fputs 함수는 fputc 함수와 마.. 문자 입출력 함수 1. 문자 출력 함수 다음의 두 가지가 있다. int putchar(int c); int fputc(int c, FILE* stream); 함수 호출이 성공하면 c 를, 즉 출력한 문자의 아스키 코드값을 int형으로 반환하고, 함수 호출이 실패하면 EOF를 반환한다. EOF는 조금 뒤에 살펴본다. 정수 c 를 문자의 형태로 출력한다. 예를 들어 c 값이 65면 A가 출력된다. fputc 함수는 stream 을 통해 출력할 스트림을 지정할 수 있다. stream 을 stdout으로 지정하면 모니터로 출력되고, 파일로 지정하면 파일로 출력할 수 있다. stream 의 자료형에서 FILE 은 파일 구조체인데, 아직은 자료형의 일종이라고만 알아두자. 1 2 3 4 5 6 7 8 9 10 #include int .. [Project Euler] Problem 019 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 public class Problem019 { public static void main(String[] args) { System.out.println(run()); } public static String run() { int sunday; int count = 0; int today = 1; for(int month = 1; month Prev 1 ··· 5 6 7 8 9 10 11 ··· 17 Next