Dreaming developer

예비 개발자를 꿈꾸는 서연이의 기록일지

Together, Tomorrow

C 5

c/c++ 로 Javascript의 padStart() 구현하기

우리는 종종 "5","3" 등의 문자열을 "05" ,"03" 과 같이 두자릿수로 형식을 맞춰야 하는 경우가 있다. 물론 출력만 그렇게 하면 된다면 %2d 등의 형식지정자를 사용해도 될것이다. 그러나 분명 출력뿐만 아니라 변환된 값의 실체를 어디엔가 이용해야할 때가 있다. 자바스크립트 ES6에는 방금 말한 역할을 하는 padStart()함수가 있다. String.prototype.padStart() 우선, padStart() 메서드는 현재 문자열의 시작을 다른 문자열로 채워, 주어진 길이를 만족하는 새로운 문자열을 반환해주는 함수이다. 채워넣기는 대상 문자열의 시작(좌측)부터 적용된다. "1".padStart(2,"0"); // 길이가 2가 아닐경우 string의 시작부분에 0을 추가함. 우리는 JS pa..

C,C++/C++ 2022.01.16

[C 기초] 함수포인터

함수포인터란? 함수를 가리키는 포인터 사실 함수 이름은 포인터이므로 메모리주소가 담겨있다. 따라서 포인터에 함수의 주소를 저장하고 그 함수포인터를 통해 인자로 함수를 주고받거나 호출할수있게된다. 1. 필요성 1) 함수자체의 매개변수, 반환값으로 : 여러사람이 협업할때에는, 누가 어떤 함수를 필요로 할지 모름. 그러나 함수포인터를 정의하고 매개변수로 전달하게 되면 그 함수 내부에서 호출이 가능하게 됨. void func(void (*fp)()) { ... fp(); //함수포인터로 함수 호출 ... } 2) 배열요소로 3)구조체멤버로 :함수포인터를 구조체멤버로 넣고, 그 멤버함수를 추후에 사용자가 원하는대로 커스텀해서 구조체 특성에 맞는 함수를 대입시킬수있다. Java에서 메소드오버라이딩으로 각 객체의 특..

C,C++/C basic 2021.08.31

[C 기초] 구조체포인터

C 언어 코딩 도장: 49.1 구조체 포인터를 선언하고 메모리 할당하기 (dojang.io) C 언어 코딩 도장: 49.1 구조체 포인터를 선언하고 메모리 할당하기 49 구조체 포인터 사용하기 보통 구조체는 멤버 변수가 여러 개 들어있어서 크기가 큰 편입니다. 그래서 구조체 변수를 일일이 선언해서 사용하는 것보다는 포인터에 메모리를 할당해서 사용하 dojang.io 구조체 포인터 구조체의 주소를 담는 포인터. 1.필요성 : 구조체는 멤버변수가 여러개 들어있기때문에 크기가 크다. 그리고 구조체 변수를 일일히 선언하면 사용하지않는 구조체 내의 멤버도 모두 복사한다. 따라서 포인터에 메모리를 할당해서 사용하는 편이 효율적이다. 2. 선언 struct 구조체이름 *포인터이름 = malloc(sizeof(stru..

C,C++/C basic 2021.08.29

[C 기초 ] 동적할당 (malloc,memset)

동적할당이란? 프로그램 실행중에 동적으로 메모리를 할당하는 것 1. 필요성 1) 특정 메모리공간이 쓰이지 않은채로 낭비되는것을 막는다. 사용할때에만 잠시 메모리를 할당했다가 할당한 메모리가 더이상 쓸일이 없게되면, 해당 메모리를 해지시켜 다른곳에서 활용할 수 있게끔 하여 효율적인 리소스 관리를 도울 수 있다. 2) 일반적인 변수나 함수의 경우 stack이라는 메모리 공간에 할당되는데, stack 에 할당된 것들은 범위를 벗어나면 파괴되어 사용할 수 없게 된다. (ex. 특정함수에서 선언한 지역변수는 함수바깥에서 사용할수 X) 하지만 동적할당을 통해 잡은 메모리는 stack이 아닌 heap에 저장되므로 함수 바깥에서도 할당된 메모리가 사라지지 않고 존재할 수 있다. 코드(code) 영역(=텍스트(code)..

C,C++/C basic 2021.08.26

[C 기초] 이중 포인터

C 언어 코딩 도장: 34.6 이중 포인터 사용하기 (dojang.io) C 언어 코딩 도장: 34.6 이중 포인터 사용하기 지금까지 변수의 포인터를 선언했습니다. 그렇다면 포인터의 포인터도 가능하지 않을까요? 이번에는 포인터의 메모리 주소를 저장하는 포인터의 포인터를 선언해보겠습니다. 포인터를 선언할 dojang.io 이중포인터란? 포인터의 주소를 가리키는 포인터. 1.선언 :변수이름앞에 **를 붙여 이중포인터를 선언한다. 2.활용 #include int main() { int* Ptr1; // 단일 포인터 선언 int** Ptr2; // 이중 포인터 선언 int n = 10; Ptr1 = &n; // num1의 메모리 주소 저장 Ptr2 = &Ptr1; // numPtr1의 메모리 주소 저장 prin..

C,C++ 2021.08.23