'CS' 카테고리의 글 목록 (4 Page)
본문 바로가기
728x90

CS86

C언어 - 포인터(Pointer) 변수의 메모리 주소, 값 메모리는 메모리의 값과 메모리의 주소와 같이 저장된다. 실행 결과를 보면 a의 값은 5로 나오고 &a는 a의 주소 값을 출력한다. 이때 주소는 고정된 값이 아니라 컴퓨터마다, 실행할 때마다 달라진다. *시스템에 따라 32비트 64비트에 따라 메모리의 범위도 달라진다. 포인터란 메모리의 주소값을 저장하기 위함이다. 메모리 값이 변수에 저장되듯 메모리의 주소는 포인터 변수에 저장된다. 포인터 변수 선언 선언 시 포인터 변수를 사용한다. 자료형* 변수명 - int* hi; 자료형 * 변수명 - int * hi; 자료형 *변수명 - int *hi; 세 가지 방식으로 선언 가능하다. 편한 방식으로 사용하면 된다. 포인터는 선언 시 반드시 먼저 초기화되어야 한다. 그렇지 않으면 의도하지 않.. 2020. 8. 21.
C언어 메모리 구조 [스택(Stack), 힙(Heap), 데이터(Data)영역] 코드(CODE) 영역 프로그래머가 작성한 소스코드가 들어있는 부분이다. 실행할 프로그램의 코드가 저자오디는 영역으로 텍스트(code) 영역 이라고도 부른다 CPU는 코드 영역의 코드를 하나씩 수행한다. 데이터(DATA) 영역 데이터 영역에는 전역 변수와 정적변수가 선언된다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 힙(HEAP) 영역 프로그래머가 메모리를 직접 관리해야하는 영역이다. 동적 메모리 할달을 이용해 사용자에 의해 메모리의 크기가 동적으로 할당되고 해지는 필수로 해야된다. 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다. 스텍 영역은 반대로 할당된다. (동적할당-iyk2h.tistory.com/81) 스택(STACK) 영역 지역 변수와 매개변.. 2020. 8. 14.
C언어 변수의 유효 범위 - 전역 변수, 지역 변수, 정적 변수, 레지스터 변수 C언어에서는 범위에 따라 변수의 접근에 제한이 있다. 변수의 종류에 따라 유효 범위, 초기화 유무, 선언 위치, 메모리 소멸 시기, 저장장소 등등 조금씩 차이가 있다. 전역 변수 함수 외에서 선언을 하고 프로그램 전체에서 유효하다. 전역 변수는 선언 시 초깃값이 0으로 초기화된다. 전역 변수는 프로그램이 종료 시 전역 변수의 메모리는 소멸된다. #include intlocal_variable; //전역변수 선언, 초기값 0 intmain() { printf("%d",local_variable); //local_variable 변수는 전역 변수이기 때문에 변수 사용 가능 return 0 ; } //결과값 0 지역 변수 함수(블럭) 내에서 선언을 하고 함수(블럭) 내에서만 유효하다. 블록이 종료되면 메모리는.. 2020. 8. 7.
C언어 - 조합 알고리즘 [nCr] 경우의 수 순열을 프로그래밍화 (나열, 카운팅) 조합이란? - 서로 다른 n개에서 순서를 고려하지 않고 r개를 선택하는 방법의 수 구현 방향 - n의 원소의 갯수가 늘어날 수록 for문의 중첩이 계속 늘어나야 한다. - for문으로 구현할 경우 중첩이 많아질경우 효율이 떨어지고 n과 r의 값이 변할때마다 코드를 수정해줘야한다. - 재귀함수를 사용해서 문제를 풀어보도록 하자. 코드 #include int arr[] = {1,2,3,4,5}; //전역 변수로 선언 int Copy[5]; //arr배열을 복사하기 위한 배열 void print_Comb(int count); void Combination(int n,int r,int c); void print_Comb(int count){ for(int i=0;i 2020. 7. 10.
C언어 - 순열 알고리즘 [nPr] 경우의 수 순열을 프로그래밍화 (나열, 카운팅) 순열이란? - 서로다른 n개에서 중복 없이 r개를 택하여 나열하는것을 순열이라 한다. nPr (Permutation) 구현 방향 - n의 원소의 갯수가 늘어날 수록 for문의 중첩이 계속 늘어나야 한다. - for문으로 구현할 경우 중첩이 많아질경우 효율이 떨어지고 n과 r의 값이 변할때마다 코드를 수정해줘야한다. - 재귀함수를 사용해서 문제를 풀어보도록 하자. 코드 #include int arr[] = {1,2,3,4}; //전역 변수로선언. 동적 할당이 효율적임 void swap(int *a, int *b ){ //값을 이동하기 위한 함수 int tmp; tmp = *a; *a = *b; *b = tmp; } void print_arr(int size).. 2020. 7. 3.
C언어 - malloc, free, sizeof 를 이용한 동적 할당 메모리를 할당할 때 malloc, calloc, realio 함수를 사용하여 메모리를 동적 할당한다. 동적 할당하는 이유는 메모리를 효율적으로 사용하기 위함이고 C언어 경우 메모리를 자동으로 관리를 해주지 않기 때문에 직접 관리해 메모리 누수를 예방 그리고 이미 할당된 메모리라도 언제든지 크기 조정할 수 있다. 하지만, 해제하지 않으면 누수가 발생하므로 꼭 명시적으로 메모리를 해제해야 한다. malloc 함수 ( memory allocate - 메모리 할당 함수) - 함수의 원형 //라이브러리 헤더파일 void *malloc (size_t size) //size_t 는 부호 없는 정수 //size 바이트의 메모리를 힙에서 할당하여 반환 int *i = (int*) malloc (sizeof(int)); .. 2020. 6. 26.
ip, 공인 ip, 사설 ip, 고정 ip, 유동 ip, 포트 포워딩(포트 포워드) ip, 공인 ip, 사설 ip, 고정 ip 그리고 유동 ip 어떤 차이가 있는지 알아보자 전자기기에 인터넷이 연결된 모든 전자기기는 ip 어드레스 즉 ip주소가 부여된다. 부여받을 때 형태가 조금씩 다르고 쓰임도 다르다. ip주소는 인터넷과 연결된 전자기기에 부여된 고유한 주소라고 정의된다. 인터넷이 연결돼있는 기기이면 ip주소는 모두 가지고 있다. ip주소를 부여하는 방식은 크게 2가지가 있다. IPv4, IPv6로 나뉜다. 공인 ip 전 세계의 ip는 ICANN라는 기관이 국가별 사용할 ip의 대역을 부여하며 관리하고, 한국은 인터넷 진흥원(KISA)에서 관리한다. ICANN>>KISA>>인터넷 3사 통신사>>집,개인,회사 등등 이런 식으로 부여받는다. 공인 ip는 전 세계에 부여받은 단 하나의 ip.. 2020. 3. 10.
외부에서 가상 머신 서버에 접속하기 가상 머신을 이용해 우분투 서버를 설치 후 apache를 다운로드하여 웹서버를 구축했다. 설정은 하지 않았고.. 외부에서 접속해보고 싶어서 시작한 포트 포워딩... 엉성하지만 성공한 것에 의의를 두고 포스팅을 마친다. 공유기에서 한번, 윈도우 내에서 한번, 가상 머신에서 한번 설정해주면 공인 ip:8080-> 우분투 server에 접속이 가능해진다. 중요하게 느낀건 하나하나 따로 연결을 해줘야 한다는 것이었다. 순서도 조금 중요했던 거 같다. 참고 순서대로면 무난하게 연결될 거 같다. 네트워크를 조금은 이해하는 시간을 가졌고 생각 그 이상으로 복잡하게 연결돼있고 어떻게든 연결고리가 있다는 걸 알았다. 끝! 참고) 사전 지식 - ip, 공인 ip, 사설 ip, 고정 ip, 유동 ip, 포트 포워딩(포트 포.. 2020. 3. 7.
윈도우 내에서 IP 포트 포워드 하기 하는 이유 외부 ip 에서 가상 머신까지 접속하기 위함이다. (컴퓨터 가상머신에 접속하기 (virtualbox), 외부ip 에서 내부ip로 접속하기 참고) 이 방법이 정답은 아니고 정확하지 않을 수 있다. 테스트를 위함이고 더 좋은 방법을 아시는 분은 공유해주셨으면 한다. 이번엔 외부에서 들어온ip를 포워딩한 ip:port와 연결할 가상 머신의 외부 ip에 포워딩을 할 거다. 포워딩을 하기 전에 내부 ip:port는 192.168.0.101:80이다 가상 머신에 포워딩한 ip:port는 192.168.56.1:80이다. 컴퓨터 입장에서 내부 ip는 받은 ip 가상 머신으로 보낼 ip는 보낼 ip로 가정한다. 윈도 컴퓨터 내에서 이뤄지는 포트 포워딩을 할 것이기에 cmd를 이용해 작업을 해주면 된다. 받은.. 2020. 3. 5.
외부ip 에서 내부ip로 접속하기 (포트포워딩 하는 방법 - IPTIME) 외부 ip에서 내부 ip로 접속하기란 자신의 컴퓨터를 내부 ip라 가정하고 자신의 컴퓨터에 다른 컴퓨터 즉 전 세계에서 접속하는 것을 말한다. 외부 ip와 내부 ip란 공인 ip는 전 세계에서 단 하나뿐인 내 인터넷 주소다. 전 세계적으로 ICANN기관에서 국가별 ip대역을 담당하고 우리나라는 인터넷 진흥원(KISA)에서 관리한다. 인터넷 진흥원(KISA)에서 부여받은 공인 ip주소가 외부 ip가 된다. 사설 ip는 공인 ip를 받아 공유기를 통해 여러 기기들이 사용할 수 있는 ip주소이다. 집에 공유기는 하나쯤 있을 거다. 공유기를 이용해 여러 컴퓨터, 스마트폰, wifi를 이용하는 것은 사설 ip를 만들어 사용하는 것이다. 외부 ip는 공인 ip! 내부 ip는 사설 ip! 외부ip는 192.168.0.. 2020. 3. 4.
컴퓨터 내에서 가상머신 서버에 접속하기 (virtualbox) 서버와 클라이언트를 가상으로 개발환경을 만들기 위해 virtualbox를 이용해 클라이언트(컴퓨터)에서 서버(가상 머신)에 접속하기 가상 머신에 우분투 서버를 설치하고 아파치 서버를 실행시켰다. 이제 가상 머신은 서버이고 컴퓨터는 클라이언트다. 서버가 작동을 잘하는지 내가 파일을 잘 올렸는지 확인하는 방법은 2가지이다. Localhost를 이용하거나 다른 컴퓨터로 접속하거나 Localhost는 쉽게 확인이 가능하고 가상 머신을 설치한 컴퓨터에서 확인을 하기 위해 서로 간의 포트를 열어준다. 그럼 컴퓨터에서 서버에 접속할 수 있다. 포트를 열어주는 방법은 virtualbox에서 네트워크 세팅을 해주면 된다. host port와 Guest Port에 80씩 넣어주면 ip는 알아서 잡아준다. 윈도우 명령어 i.. 2020. 3. 3.
728x90