코드네임 :
C혼공 10,11,13일차 - 동적할당 (너무 어려워서 한번 더 봐 ㅜㅜ) -명령행 인수는 뭐고... / 도전실전 문제도 푸러야댐 본문
C혼공 10,11,13일차 - 동적할당 (너무 어려워서 한번 더 봐 ㅜㅜ) -명령행 인수는 뭐고... / 도전실전 문제도 푸러야댐
비엔 Vien 2024. 2. 4. 19:482/4 - 절반만..오늘 좀 2학년 계획 좀 대충 짜야겠음 (내일 나머지)
오ㅏ 동적할당은 다 까먹어서 진짜 흑흑
책 설명 + 채찍피티의 힘을 빌려 이해해보도록 하쟈
동적할당
-프로그램 실행중에 저장공간을 할당하기
- 처리할 데이터 종류나 수를 장담할 수 없다면
프로그램 실행 중 메모리를
동적할당 할때 : malloc
반환할 때 : free
#include <stdlib.h>
malloc함수의 반화값이 NULL 포인터인지 반드시 확인하고 사용!(479p의 9행처럼)
-> NULL(0)은 메모리 부족을 뜻함(할당 실패)
exit 함수 : 어느경우든 프로그램 바로 종료 (예외상황이 발생해 프로그램 종료시 인수로 1을 주고 호출 ( exit(1) ))
malloc뒤에는 항상 free가 (사용끝난 저장공간은 반드시 반환)
malloc에서 (자료형 *) : 반환되는 주소를 '자료형'형 변수의 주소로 형변환
(왜냐면 malloc함수의 원형이 void *malloc(unsigned int size); 거든 )
ex
pi = (int *) malloc(sizeof(int)); // 480페이지!!!
// pi : int형을 가리키는 포인터에 저장
// int * : 반환된는 주소를 int형 변수의 주소로 형 변환
// malloc(sizeof(int)) : 저장 공간을 할당하고 (void *)형 반환
484~5p
calloc : 할당한 저장공간을 0으로 초기화
realloc : 크기 조절(재할당) -realloc함수는 첫번째 인자로 기존에 할당된 메모리의 포인터를 받고, 두번째 인자로 새로 할당할 메모리의 크기를 받음
489p 문제!!!
490은 pb랑 pc가 이해안돼서⬇️
2/9
strlen 함수는 null문자를 제외하고 문자열의 길이를 계산하므로 malloc 함수에 인수로 줄때 (char*)malloc(strlen(배열이름)+1) 처럼 1을 더해서 null 문자를 포함할 수 있도록 저장공간을 할당해야 함
와 너무 어려운데 여기
문자열을 직접 출력할때 배열명은 그 값을 바꿀수 없으므로, str[i]와 같이 배열 표현을 사용하거나 *(str+i)처럼 정수를 더하면서 각 문자열을 출력할 수 밖에 없다.
그러나 배열명을 포인터에 저장하면 포인터 자신의 값을 바꿀 수 있으므로 매개변수를 하나씩 증가시키면서 문자열을 출력 가능
16-2 1번..2번...
3번은 명령행 인수를 알고나서....
'⚙️Computer System > C' 카테고리의 다른 글
C혼공 12, 13일차 - 응용포인터 (이중**/배열/함수/void) - 도전실전예제 영상좀 보고 해ㅇ라 (0) | 2024.02.04 |
---|---|
C혼공10일차 - 다차원 배열/ 포인터 배열 (0) | 2024.02.04 |
C혼공 9일차 - 변수 사용 영역 (0) | 2024.02.02 |
C 혼공일기 8일차 (문자열과 포인터/ 문자열 연산 함수) (0) | 2024.01.30 |
C혼공일기 7일차 (문자) (1) | 2024.01.27 |