본문 바로가기

전체 글

(88)
C언어 공용체와 리틀 엔디언 https://www.yes24.com/Product/Goods/117080938 C 언어 코딩 도장 - 예스24프로그래밍은 연습으로 배우는 것이다!가장 깊이 있는 C 언어 입문서C 언어의 난해하고 까다로운 주제도 생략하지 않고 단계별로 차근차근 설명한다. 개념을 생략하고 쉬운 책이 되는 것보단 제www.yes24.com공부하고 정리한 내용을 올렸습니다. (페이지 590쪽) 우리가 사용하는 x86(x86-64) 계열 CPU는 리틀 엔디언이라는 방법으로 값을 메모리에 저장합니다. 간단하게 이야기하면 리틀 엔디언은 숫자를 1바이트씩 쪼개서 낮은 자릿수가 앞에 옵니다. 사람이 보기에는 반대로 뒤집혀 있죠. #include union Data { char c1; // 1 바이트 short num1; // 2바이..
C언어 구조체 포인터 구조체에 포인터를 사용해서 맴버 변수에 접근하고 싶을 때 어떻게 하면 좋을까? 구조체 변수를 일일이 선언해서 사용하는 것보다는 구조체 포인터를 선언하고 malloc함수를 사용해서 구조체 포인터에 동적 메모리를 할당한 다음 화살표 연산자나 -> .(점)을 사용해서 구조체 멤버의 값에 접근한다. 구조체안에 있는 멤버 변수들 struct Data{ char c1; int *numPtr; }; 1. 먼저 구조체 포인터를 선언하고 malloc 함수를 사용해 동적 메모리를 할당한다. ex) struct Data *d2 = malloc(sizeof(struct Data)); 2. 여기서 역참조 하는것에 괄호를 붙이면 구조체 포인터를 역참조한 뒤 .(점)을 사용하여 맴버에 접근할 수 있다. ex) 구조체 포인터의 예 ..
러스트 프로그래밍 - 스코프를 벗어나면 drop https://www.yes24.com/Product/Goods/116789691 프로그래밍 러스트 - 예스24 『러스트 프로그래밍 공식 가이드』보다 더 친절하게, 한층 더 고급 기능까지 다룬다!이 책은 메모리 안전성과 신뢰할 만한 동시성에 예측 가능한 성능을 더한 러스트의 기능이 어떤 식으로 메 www.yes24.com https://www.yes24.com/Product/Goods/116586619 만들면서 배우는 러스트 프로그래밍 - 예스24 고효율, 현대적 프로그래밍 언어 Rust의 결정적 해설서!러스트는 효율적이고 신뢰할 수 있으며 생산성이 높은 언어로, 프로그래머가 가장 배우고 싶어 하는 언어로 꼽힌다. 배울 가치가 높은 언 www.yes24.com 실습하면서 공부하고 정리한 것을 올린것입니다..
러스트 프로그래밍 - 참조 & 와 빌림(borrow) https://www.yes24.com/Product/Goods/116586619 만들면서 배우는 러스트 프로그래밍 - 예스24 고효율, 현대적 프로그래밍 언어 Rust의 결정적 해설서!러스트는 효율적이고 신뢰할 수 있으며 생산성이 높은 언어로, 프로그래머가 가장 배우고 싶어 하는 언어로 꼽힌다. 배울 가치가 높은 언 www.yes24.com 책을 읽고 실습한 것을 정리한 내용을 올린 것입니다. 소유권을 일시적으로 빌려 주고싶을 때 함수를 만든 뒤 함수 인자에 참조자 &를 넣어서 전달한다. 그래서 소유권 문제를 해결 할수 있다
러스트 프로그래밍 - 힙(heap)영역과 스택(stack)영역 https://www.yes24.com/Product/Goods/116586619 만들면서 배우는 러스트 프로그래밍 - 예스24 고효율, 현대적 프로그래밍 언어 Rust의 결정적 해설서!러스트는 효율적이고 신뢰할 수 있으며 생산성이 높은 언어로, 프로그래머가 가장 배우고 싶어 하는 언어로 꼽힌다. 배울 가치가 높은 언 www.yes24.com 힙(heap) 영역에 저장된 메모리는 임의의 순서로 메모리를 확보하거나 해제할 수 있다.원할 때 만큼 메모리를 확보할 수 있다. 예를들어 문자열(String 타입)이나 구조체같이 가변크기 같은 변하는 데이터는 힙영역에 저장되서 소유권관리를 받게된다. 반면 스택(stack) 영역은 이미 데이터가 정해져 있어서 예를 들어 숫자 데이터 등의 기본 타입 데이터는 스택영역에..
러스트 프로그래밍 - 소유권과 이동 이동을 설명하기전에 먼저 소유권을 알아야한다. 하나의 변수의 값에는 하나의 소유권이 있다. 파이썬과 C++ 코드 비교를 통해 소유권을 알아보자 먼저 파이썬 코드를 보면 s = ['피자', '치킨', '콜라'] t = s u = s 리스트 s 가 t,u 에 할당 되면서 래퍼런스 카운터가 증가되어 3을 갱신한다. 값을 해체할때는 시점을 알기위해서는 반드시 래퍼런스 카운트를 유지시켜야 한다. C++ 코드를 보면 using namespace std; vector s = { "피자", "치킨", "콜라"}; vector t = s; vector u = s; std::vector는 백터의 복사본이 만들어지고 std::string도 비슷하게 작동한다. 벡터3개와 문자열 총 9를 할당하게 된다. https://www...
[모던 자바스크립트 Deep Dive] 암묵적 명시적 타입변환 P112쪽 자바스크립트 엔진은 산술 연산자 표현식을 평가하기 위해 산술 연산자의 피연산자 중에서 숫자 타입이 아닌 피연자를 숫자 타입으로 암묵적 타입 변환한다. 숫자 타입으로 변환 1 - '1' // 0 1 * '10' // 10 1 / 'one' // NaN P112쪽 +단항연산자는 피연산자가 숫자 타입의 값이 아니면 숫자 타입의 값으로 암묵적 타입으로 변환 한다. 주의!!! +'' = 0이 됬다고 해서 값이 변경된것은 아니다 ex) 1+'1' = 11(string)이 나온다 // 문자열 타입 +'' // 0 +'0' // 0 +'1' // 1 +'string' // NaN // 불리언 타입 +null // 0 +undefined // NaN // 심벌 타입 +Symbol() // TypeError: ..
[자바스크립트 빈도수 세기패턴] 유데미 자바스크립트알고리즘& 자료구조 마스터 클래스 Colt Steele강의를 듣고 공부한 내용을 정리한 것입니다. 선형시간 n^2 주석을 보면 설명이 있습니다. function same(arr1, arr2) { if (arr1.length !== arr2.length) { return false; } // 선형시간 n제곱 // 하나의 for루프밖에 없어서 전체배열을 반복함 for (let i = 0; i < arr1.length; i++) { let correctIndex = arr2.indexOf(arr1[i] ** 2); // 제곱 해서 해당 값이 없으면 false if (correctIndex === -1) { return false; } console.log(arr2); // 배열의 인덱스 첫번..