일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 포인터
- 42Seoul
- 동적할당
- 42
- 자료형
- float
- vs코드 단축키
- Double
- docker
- C++
- 구조체
- phpmyadmin
- nginx
- 패킹
- libft
- Class
- ft_server
- iF
- list
- C언어
- 42서울
- 42cursus
- else if
- python
- jupyter 단축키
- 2차원배열
- for
- While
- 함수
- cout
- Today
- Total
목록분류 전체보기 (46)
Developer
String 함수들 대부분 malloc를 사용해야 하는 함수. malloc으로 동적 할당에 실패할 경우 NULL을 반환하므로 항상 동적 할당한 포인터가 NULL인지 확인해 적절한 처리를 해주어야 한다. malloc실패에는 너무 큰 크기의 요청, 음수 혹은 0 크기의 할당 요청, 메모리 부족 등등..... 1. ft_substr Prototype char *ft_substr(char const *s, unsigned int start, size_t len) 함수 동작 = 문자열 s의 start 위치부터 len길이만큼을 새로운 메모리를 할당(동적 할당)해 저장한 뒤 반환 = return : 할당에 실패할 경우 NULL을 반환 구현 방법 동적 할당에 실패했을 경우에만 NULL을 반환하라고 작성되어 있어서 s가..
1. void 포인터 (void *) void 포인터는 주소 값을 가진다. 하지만 int형 포인터나 char 포인터처럼 역참조(*)를 할 수 없다. 물론 포인터 연산도 할 수 없다. 역참조나 포인터 연산을 하기 위해서는 자료형의 크기를 알아야 해당 자료형의 크기만큼 값을 참조하거나, 주소를 이동할 수 있기 때문이다. 하지만 자료형이 정해져 있지 않기 때문에 다양한 자료형의 포인터를 형변환을 통해 사용할 수 있다. 예를 들어 malloc의 경우 반환형이 void *이다. 그래서 사용할 때 char *a = (char *)malloc(sizeof(char) * n)과 같이 char *형으로 사용할 수 도 있고, int *a = (int *)malloc(sizeof(int) * n) 과 같이 int *형으로 ..
생성자(Constructor)는 객체의 생성 즉, 클래스 변수를 선언할 때 선언과 동시에 초기화를 가능하게 해주는 함수이다. 그럼 생성자는 왜 필요할까? 이전에 클래스도 사용자가 직접만든 자료형과 같다고 했다. 기본 자료형의 변수와 마찬가지로 객체를 생성하면 메모리가 할당되고, 쓰레기값을 가지게된다. 따라서 객체 생성이후에 각 멤버에 값을 직접 넣어주어야한다. 하지만 각 멤버를 직접 일일히 작성해 주는것은 매우 귀찮은 작업이고, 혹시 중간에 깜빡해서 값을 할당하지 않은 멤버가 있을 수 도 있다. 이러한 작업을 좀 더 간결하고 혹시 입력되지 않은 값에 대한 default 값까지 설정할 수 있게 해주는게 생성자이다. 생성자 생성자는 class와 같은 이름의 멤버 함수이다. 코드를 통해 사용법을 알..
C++은 객체 지향 프로그램을 지원한다고 했다. 현실에 존재하는 객체(Object)와 객체의 상태(State)와 동작(Behavior)을 소프트웨어로 구현한 것이다. 예를들어 시계라는 객체가 있고 이러한 시계의 상태는 현재 시간, 동작은 시간이 흐르고, 알람 설정 등...이 있다. 이러한 것을 소프트웨어로 구현하는 것이다. 위에서 설명한 객체를 소프트웨어에서 표현하기 위해 사용하는 것이 클래스(class)이다. 이전 글인 구조체에서 class는 구조체의 확장판이고 둘의 차이도 설명하였다. 코드를 통해 Class를 직접 사용해보자. #include #include using namespace std; class student{ //학생이라는 객체의 설계도 string name; //default 접..
구조체 변수 선언 #include #include using namespace std; struct student{ string name; int id; int age; string phonenumber; }; int main(){ student a1={"김모군",123456,20,"010xxxxxxxx"}; cout
디폴트인수 #include using namespace std; int f(int a=3,int b=4,int c=5,int d=6){ return a+b+c+d; } int main(){ cout
레퍼런스(참조자)는 원하는 변수를 또 다른 이름으로 사용할 수 있게해준다. 쉽게 말하면 변수에 별명(Alias)을 정의해줄 수 있다. 자료형 &별명 = 별명을 부여할 대상 레퍼런스의 선언 방법은 위와 같다.주의할 점은 대상의 자료형과 별명의 자료형이 같아야 하며, 별명을 부여받는 대상은 실제 메모리를 점유하고 있는 좌변 값(l-value)이어야 한다. 또한 선언과 동시에 초기화해주어야 한다(초기화가 반드시 필요할 뿐 이후 대상을 변경할 수 있다). #include using namespace std; void swap(int x,int y){ int temp=x; x=y; y=temp; } int main(void){ int a=1,b=5; swap(a,b); cout
다른언어를 배우지 않고 처음 C++을 접하는 것이라면 이 글을 읽기전에 C언어 카테고리의 10.연산,연산자 / 12. 논리 연산자,비트 연산자를 읽고오길 바란다. if문, switch문, while문, for문은 C에서의 사용법과 모두 같으므로 간단하게 예시코드와 주석으로 설명하겠다. 더 궁금한사람은 C언어 글에서 찾아볼 수 있으니 참고하자! if 단독 사용 #include using namespace std; int main(){ int a=4; //정수형 변수 a를 4로 초기화 int b=2; //정수형 변수 b를 2로 초기화 if(a>b){ //만약 a가 b보다 크다면 아래의 코드를 수행 cout