목록전체 글 (103)
juuuding

1. 포인터의 포인터에 대한 이해 1. 포인터 변수를 가리키는 이중 포인터 변수 (더블 포인터 변수) 포인터 변수는 종류에 상관없이 무조건 주소 값 저장하는 변수이다. 포인터 변수도 메모리 공간에 할당이 되는 변수인데, 이를 대상으로 &연산이 가능하며 이 때 반환되는 주소 값은 'double 포인터 변수'에 저장이 가능하다. "ptr = &num" 이고 "double ** dptr = &ptr" 이면 *dptr은 변수 ptr을 의미하고 **dptr은 변수 num을 의미한다. int main(void) { double num = 3.14; double* ptr = # double** dptr = &ptr; double* ptr2; printf("%9p %9p\n", ptr, *dptr);//둘 다 ..

1. 다차원 배열의 이해와 활용 1. 다차원 배열을 대표하는 2차원 배열의 선언 int arr1[3][4]; -> 세로3, 가로 4인 int형 2차원 배열 int arr2[2][6]; -> 세로2, 가로 6인 int형 2차원 배열 [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] TYPE arr [세로길이][가로길이]; sizeof(arr1)의 결과 : 3*4*4 = 16 2. 2차원 배열의 메모리상 할당의 형태 우리가 사용하는 컴퓨터 메모리는 2차원 구조가 아니다. 이는 메모리 주소 값을 통해 알 수 있다. 우리가 사용하는 메모리의 주소 값은 다음과 같이 1차원적 구조이다. " 0x1001번지, 0x10..
도전 1 Q) 길이가 10인 배열을 선언하고 정수를 입력 받아서, 홀수 짝수를 구분 지어 출려가는 프로그램을 작성해보자. 일단 홀수부터 출력하고 나서 짝수를 출력하도록 하자. 10개의 정수는 main함수 내에서 입력 받고, 홀수 짝수 함수를 출력하는 함수를 각각 정의해서 두 함수를 호출하는 방식으로 프로그램을 완성하자. [실행의 예] 10개 숫자 입력: 1,2,3,4,5,6,7,8,9,10 홀수 출력: 1,3,5,7,9 짝수 출력: 2,4,6,8,10 #define _CRT_SECURE_NO_WARNINGS #include /*길이가 10인 배열에 정수 입력 받고 짝수, 홀수 따로 출력하는 함수 만들어 호출*/ void Even(int param[]) { int i = 0; printf("짝수 출력: "..
1. 함수의 인자로 배열 전달하기 *함수 호출 시 배열을 통째로 전달하는 방법은 없다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야 하는데 이는 불가능하다. 대신에 함수 내에서 배열에 접근할 수 있도록 배열의 주소 값을 전달하는 것은 가능하다. 1. 배열을 함수의 인자로 전달하는 방식 함수의 매개변수는 포인터 변수로 선언되어야 한다. void ShowArrayElem(int* param, int len) { int i; for (i = 0; i < len; i++) { printf("%d", param[i]); } printf("\n"); } int main(void) { int arr1[3] = { 1,2,3 }; int arr2[5] = { 4,5,6,7,8 }; ShowArrayE..

1. 포인터와 배열의 관계 1. 배열의 이름은 무엇을 의미하는가 배열의 이름은 포인터이다. 단, 그 값을 바꿀 수 없는 상수 형태의 포인터이다. "배열의 이름은 배열의 시작 주소 값을 의미하며, 그 형태는 값의 저장이 불가능한 상수이다". 배열과 포인터의 유일한 차이점은 포인터 변수는 변수이지만, 배열의 이름은 가리키는 대상의 변경이 불가능한 상수라는 점이다. 즉 배열의 이름은 '상수 형태의 포인터'이다. 이처럼 배열의 이름도 포인터이기 때문에 배열의 이름을 피연산자로 하는 * 연산이 가능하다. 2. 1차원 배열이름의 포인터 형과 배열이름을 대상으로 하는 *연산 배열의 이름이나 포인터 변수나 둘 다 포인터이기 때문에, 실제로 포인터 변수는 배열의 이름처럼 사용할 수 있다. 즉, 포인터 변수 ptr을 대상..

1. 포인터란 무엇인가 1. 주소 값의 저장을 목적으로 선언되는 포인터 변수 int main(void) { char ch1 = 'A', ch2 = 'Q'; int num = 7; } 이 코드에서는 총 6바이트(1+1+4)가 메모리 공간에 할당된다. "int형 변수 num은 0x12ff76번지에 할당되어 있다"와 같이 시작번지만을 가지고 위치를 표현한다. 주소 값 0x12ff76번지 역시 정수인데 이것의 저장을 위해 마련된 변수가 "포인터 변수"이다. 따라서 "포인터 변수란 메모리 주소 값을 저장하기 위한 변수"라고 할 수 있다. int main(void) { int num = 7; int* pnum;//포인터 변수 pnum의 선언 pnum = #//num의 주소 값을 포인터 변수 pnum에 저장 ..

1. 라이브러리 설치 pip install selenium pip install webdriver-manager 2. 사이트의 게시판에서 원하는 키워드가 검색되면 알림 뽐뿌 사이트: 평소보다 저렴하게 파는 제품이 있다면 추천하여 알려줌. 파이썬으로 게시판을 감시하고 있다가 내가 원하는 키워드를 찾으면 알림을 보내도록 하는 코드 만들기 (1) 뽐뿌 게시판에 접속하는 코드 from webdriver_manager.chrome import ChromeDriverManager from selenium import webdriver driver = webdriver.Chrome(ChromeDriverManager().install()) #뽐뿌 게시판 주소. driver.get(url='https://www.ppo..

#19 구글 이미지 크롤링 * 사전 지식 - 크롤링은 주피터 노트북 형식으로 파이썬 코드를 작성하고 테스트 하는 것이 좋다. 사이트들은 기계의 접속을 싫어하는데, 우리가 파이썬 파일로 반복하여 접속하면 기계가 접속했다고 판단하여 더이상 접속이 안될 수도 있기 때문이다. .py 형식으로 파이썬 코드를 만들고 크롤링을 진행하면 한번의 코드 실수로 인해 다시 접속해야한다. .ipynb 의 주피터 노트북 방식을 사용하면 접속하는 부분까지는 한 번 진행하고 접속해둔 상태에서 코드를 수정하며 웹상에서 데이터를 찾을 수 있다. 크롤링을 할 때 어떻게 사람이 접속한 것처럼 보이게 만드는지가 중요하다. 1. 라이브러리 설치 selenuium : 웹을 제어하는 라이브러리 webdriver-manager : 웹 드라이버를 ..