공간 복잡도 : 메모리 시간 복잡도 : 알고리즘 시간 오메가 표기법 : 불규칙한 시간 중 가장 최선의 시간으로 확인 빅O 표기법 : 불규칙한 시간 중 가장 최악의 시간으로 확인 세타 표기법 : 가장 최선과 최악의 평균 시간으로 확인
주로 사용하는 문자열 함수
char szName[32] = "hello";
char szTemp[32] = "world";
문자열 복사 함수
strcpy_s(); 문자열 복사 함수
strcpy_s(복사 받을 공간의 주소, 복사 받을 공간의 크기, 복사할 문자열 주소);
strcpy_s(szName, sizeof(szName), "wo");
wo로 초기화됨. 단, 복사할 문자열이 받을 공간보다 크면 안됨
문자열 결합 함수
strcat_s(); 문자열 결합 함수
strcat_s(결합된 결과를 공간의 주소,결합된 문자열 공간의 크기, 결합시킬 문자열);
strcat_s(szName, sizeof(szName), szTemp)
helloworld 출력 경로 편집을 진행할 때 많이 사용
문자열 길이 함수
strlen(); 문자열 길이 함수(널문자 제외)
strlen(길이를 구하고 싶은 문자열의 주소);
반환 타입은 size_t;
문자열 비교 함수
int strcmp();문자열 비교 함수 (두문자열이 일치하는지 판단하는 함수)
int strcmp(비교할 문자열1, 비교할 문자열2);
→ 참이면 0 / 거짓이면 1 (c언어 시절의 잔재)
#include <string>
string strName = "hello";
strName.length();
strName == hello
STL임. 간편하게 이용할 수 있음
string과 문자열을 동시에 사용했을 때.
char szName[32] = "hello"
string strDst = "";
strDst = szName; //가능 : operator연산자
szName = strDst; //불가능
strcpy_s(szName, sizeof(szName), strDst); //불가능
strcpy_s(szName, sizeof(szName), strDst.c_str()); //가능 : 자료 타입 일치
사용자 정의 자료형: 사용자의 필요에 따라 자료형을 직접 만들어서 사용하기 시작한 것. 자료 타입에 해당하는 키워드를 반드시 삽입하여 자료형을 제작해야함
c언어 시절 - 구조체(struct) , 공용체(union), 열거체(enum) c++ - 구조체(struct) , 공용체(union), 열거체(enum), 클래스(class)
보통 구조체는 함수 안이 아닌, 함수 밖에 만들게 됨. 이름에는 관습적으로 tag를 붙여옴
구조체 생성.
struct tagInfo{
int ikor; //구조체 멤버 변수
float fAver; //구조체 멤버 변수
}
int main(){
tagInfo tinfo; //구조체 변수를 선언.
tagInfo tinfo ={0, 0.f}; //구조체 변수를 선언과 동시에 초기화.
cin << tInfo.iKor; (.은 멤버 접근 연산자)
tagInfo tTemp[3] = {};
tagInfo* pTemp = &tinfo; (포인터 물론 가능함)
*pTemp.iKor = 200;(참조 물론 가능함)
pTemp->iKor =200; (위와 같은 형태. 포인터만 가능)
return 0;
}
C언어 환경 (C++ 아님)
struct tagInfo{
int ikor;
float fAver;
}
int main(){
struct tagInfo tinfo;
//c언어 시절에는 키워드 삽입이 반드시 필요했다.
tagInfo tinfo ={10, 3.14f};
printf("%d", tInfo.iKor);
return 0;
}
그렇기에
C언어 환경 (C++ 아님)
typedef struct tagInfo{
int ikor;
float fAver;
}INFO;
int main(){
INFO; tagInfo tinfo;
//타입 디파인을 사용했음.
tagInfo tinfo ={10, 3.14f};
printf("%d", tInfo.iKor);
return 0;
}
typedef struct tagInfo{
int ikor;
float fAver;
void Render(){
...C시절에는 구조체 안에 함수가 존재할 수 없었다.
}
}INFO;
struct tagInfo{
int ikor;
float fAver;
void Render(){
C++부터는 구조체 안에 함수를 선언할 수 있다. (멤버 함수)
}
}INFO;
구조체는 멤버 변수와 함수가 없다고 하더라도, 있다는 것은 메모리에 저장해야 하기에 디폴트로 1바이트 크기를 가짐.
또한 멤버 변수를 가질 경우 모두 합한 바이트를 가지게 됨.
tagInfo tinfo ={10, 3.14f};
블록 단위 메모리로 초기화 하는 문법이다.
그렇기에 가장 큰 바이트 단위로 할당을 하게 됨.
그렇기에 float기준으로 4바이트를 기준으로 메모리를 할당하게 되는 것임
struct tagInfo{
char ikor; 1
shor ikor; 2
float fAver; 4
};
이건 가장 큰 4바이트 기준으로 블록을 가지지만! 1바이트와 2바이트는 4바이트 블럭 안에 두개를 넣을 수 있기에 총 8바이트 구조체임.
그렇기에 작은 것부터 위에서 할당하는 것이 좋다.
struct tagInfo{
char ikor; 1
shor ikor; 2
doubli fAver; 8
};
struct tagInfo2{
char ikor; 1
shor ikor; 2
float fAver; 4
tagInfo tInfo;
};
이거는 속에 들어간 구조체의 메모리 블럭까지 함께 계산함 크기를 계산할 때에는 기본 자료형을 기준으로 계산하게 됨.
숙제 : 25-02-28 55 빙고 25-02-28 숫자 0 이동 시키기 25-02-28 문자열 길이 세기 25-02-28 문자 뒤집기 25-02-28 구조체 성적표