동적할당 c ▶1차원 배열 동적할당 int *k;int input;scanf("%d" , &input); k = (int *)malloc(sizeof(int)*input);▶2차원 배열 동적할당 int **k;int input;scanf("%d" , &input); k = (int (*)[ ])malloc(sizeof(int)*10); // 행의 크기k[0] = (int *)malloc(sizeof(int)*input); // 열의 크기 c++ ▶일반 변수 int *k = new int; // 동적으로 int 객체 할당*k = 10;delete k; // 동적으로 int 객체 제거 ▶1차원 배열 동적할당 int size;scans("%d", &size); // size = 20int *arr = new ..
결론 명시적인 것이 좋은건가?에 따라 다름 ( ∴ 안해줘도 됨 )이말은 `형변환이 필요없다`는 뜻이 아니고 `할 필요가 없다`는 뜻입니다 우리는 malloc 함수의 리턴값이 void * 라고 배웠습니다. 명시적으로 형변환을 해줄 수 있다는 것도 알았구여 자동적으로 형변환이 된다는 걸 알고 있죠 자 아래 예시는 2차원 동적할당입니다. easy하죠 #include int main() { // 2차원배열 만들기 (n X n) int n = 5; int ** arr; int i; arr = (int **)malloc(sizeof(int *) * n); // n만큼 2차원 배열 만들어줌, n의 크기는 1차원 for(i=0; i < n; ++i) arr[i] = (int *)malloc(siz..
지난시간에 이어서(코드를 잘 못짜게되면서 쓰게된 글) 글을 쓰게 된 이유 요약1. 코드를 잘 못짰는데 못찾았음 ಠ╭╮ಠ2. VS에서 디버깅 해봤는데 돌아가긴 하는데요 좋은건지 나쁜건지??3. gcc로 하면 오류가 뜨는데?? 당연하겠죠 나의 문제일단 어찌되었든 저의 눈으로 먼저 찾을 수 있는 문제였습니다 (선 eye.. 디버깅) 그동안 눈이 삐꾸였던거에요gdb 디버깅을 하면 값을 할당하던 곳에 멈춤니다 (후 gdb 디버깅)- `음 여기 값의 범위가 잘못되었군`을 알 수 있었죠2차원 동적할당을 할 때 동적 크기를 잘 못해줌. 이로인해 나머지 동적할당을 제대로 범위대로 할 수 없어짐. (이에 대해서 할말이 있음 - 글을 또 쓰려는 속셈!)범위를 넘어서게 함으로써 범위에 맞지않은 값 할당 (1로 범위를 시작하기..
일단 이글을 학습자료라고 생각하고... 올릴게요 visual studio에서 잘 돌아가는 코드를 짰는데... 제출 시에 오류가 뜨는 경우가 있어요〆(・∀・@)컴파일러가 다르기 때문이죠. 물론 코드가 잘못된거에요 가상 우분투(c9)에서 gcc로 돌려보고 Segmentation fault를 뜬걸 보고 뭔갈 잘못되었음을 깨달았습니다 (강조) visual studio가 잘못한게 아니에요, 제가 잘 짰으면 그럴일 없었어요(이 글은 이렇게 시작되었다) 결론부터 말하지만 visual studio는 편리한 IDE이지만 우리의 코딩을 뭔가 간과하게 만드는 것이있어요.gcc로 넘어오세요(추천사항) gcc깔고 제트브레인 IDE으로 넘어오세요 하하(홍보아님)불편하겠지만 gcc깔고 visual studio와 연동하는 법이있어요..
1. Stack 스택이란? 자료의 입출력이 후입선출(LIFO:Last-In First-Out)의 형태로 일어나는 자료구조를 말한다. 후입선출(LIFO:Last-In First-Out) 나중에 들어온 데이터가 먼저 나간다!!! 스택의 구조 ( 요소,항목 / 스택 상단 - TOP / 삽입 연산 - PUSH / 삭제 연산 - POP ) 스택의 연산 1. push(x) : 주어진 요소 x를 스택의 맨 위에 추가한다. 2. pop( ) : 스택이 비어있지 않으면 맨 위에 있는 요소를 삭제하고 반환한다. 3. peek( ) : 스택이 비어있지 않으면 맨 위에 있는 요소를 삭제하지 않고 반환한다. 4. isEmpty( ) : 스택이 비어있으면 true 값을, 비어있지 않으면 false 값을 반환한다. 5. isFul..