new Array(length).map()으로 배열 초기화시 콜백이 실행되지 않는 문제
Dev Log
자바스크립트에서 배열을 초기화하려고 new Array(4).map(() => [])을 사용했는데 의도대로 동작하지 않았다. 원인을 찾아보니 JavaScript의 빈 슬롯과 undefined의 차이, 그리고 map() 메서드가 빈 슬롯에 대해 콜백을 실행하지 않는다는 특성 때문이었다. 문제 상황특정 크기의 배열을 만들고 각 요소를 []로 초기화하려고 했다.const result = new Array(4).map(() => []);console.log(result); // 기대: [[], [], [], []] 하지만 실제 결과는 달랐다.console.log(result); // [empty × 4]console.log(result[0]); // undefined 원인 분석빈 슬롯 vs undefined자바스..
[CS50] 배열 - 문자열과 배열
TIL
문자열은 배열이다지금까지 문자열을 저장하기 위해 string 자료형을 사용했다. '문자열'은 문자가 '나열되어 있다' 또는 '배열되어 있다'는 의미다. C에서 string은 정확히 어떻게 정의되어 있을까? 문자열(string) 자료형은 사실 문자(char) 자료형의 배열이다. 문자 배열string s = "HI!";와 같이 문자열 s가 정의되어 있다고 가정해보자. s는 문자의 배열이므로 메모리상에 다음과 같이 저장되며, 인덱스로 각 문자에 접근할 수 있다.가장 끝의 \0은 널 종단 문자로, 문자열의 끝을 나타낸다. 모든 비트가 0인 1바이트를 의미한다. 2차원 배열여러 문자열이 동시에 선언된 경우를 살펴보자.string names[4];names[0] = "EMMA";names[1] = "RODRIGO"..
[CS50] 배열
TIL
메모리와 자료형특정 자료형의 변수를 선언하면 메모리상에 특정 크기만큼 자리를 차지한다. 비슷한 종류의 값을 모아서 저장하려면 어떻게 해야 할까? C의 자료형과 각각의 메모리 크기는 다음과 같다.bool: 불리언, 1바이트char: 문자, 1바이트int: 정수, 4바이트float: 실수, 4바이트long: 더 큰 정수, 8바이트double: 더 큰 실수, 8바이트string: 문자열, ?바이트 컴퓨터 안에는 RAM이라는 물리적 칩이 메모리 역할을 한다.각 사각형이 메모리를 의미하고, 작은 사각형 하나가 1바이트다. 예를 들어 char 타입 변수를 생성하면 한 사각형에 값이 저장된다. 배열배열 선언세 개의 점수를 저장하고 평균을 출력하는 프로그램을 작성해보자.#include #include int main(..