수업기록

공간 복잡도 : 메모리 시간 복잡도 : 알고리즘 시간 오메가 표기법 : 불규칙한 시간 중 가장 최선의 시간으로 확인 빅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;
}

TMI

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;
}

TMI

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 구조체 성적표