본문 바로가기

c언어

c언어 struct 구조체를 써야하는 이유 struct 안 쓰면 불편한 점 c언어 struct의 필요성과 장단점 그리고 사용시 주의할 점에 대한 이야기입니다. car_name이란 변수를 참조하는 함수들이 100개 있다고 가정하죠. 함수 선언과 정의하는 부분들이 있을 겁니다. 그런데 car_color란 변수를 추가해야 할 일이 생겼습니다. 그래서 100번 수정해서 함수들 마다 데이터 하나를 추가했습니다. 그런데 또 수정 요구가 들어왔어요. 오 마이… 이번에는 car_size입니다. 헐….. OTL 이런 반복작업을 계속 해야 할까요? struct를 쓰면 좋은 점 위의 이야기와 같은 불상사를 막으려면 struct를 사용하면 됩니다. c언어의 struct 구조체는 여러 형의 데이터를 묶어야 할 때 사용합니다. 즉 구조화된 데이터형이죠. 이렇게 하면 좋은.. 더보기
'pointer to incomplete class type is not allowed' 컴파일 에러 해결방법 컴파일 시 다음과 같은 에러가 나온다면 헤더를 인클루드 여부를 확인하라. 소스에 헤더가 포함되지 않아서 생기는 경우가 대부분이기 때문이다. Error[line 275] : pointer to incomplete class type is not allowed 에러 내용을 좀 더 보면 번역하면 '불완전한 클래스 유형의 포인터가 허용되지 않습니다' 즉 선언이 안 되어 있다는거다. 변수나 구조를 선언한 헤더를 포함했는지 여부를 따져보자. 더보기
c언어 sizeof 잘못쓰면 낭패 c언어에서 sizeof 사용할 때 이거 하나는 알아두세요. 제가 오늘 실수한 내용 공유합니다. c언어에서 sizeof는 변수 타입의 메모리 바이트 크기를 구하고자 할 경우 주로 사용하는데요. sizeof(type) 이런식으로 씁니다. 다들 아는 얘기죠. 그러면 바이트 단위의 사이즈를 돌려줍니다. 가령 int a; result = sizeof(a); 라고 하면 result에는 보통 4라는 값이 들어갑니다. int a[3]; result = sizeof(a); 라고 하면 result 변수에는 정수크기와 배열 크기의 곱에 해당 하는 4 * 3 = 12라는 값이 들어가게 되고요. 포인터를 사용하지 마세요 그런데 종종 실수 할 수 있는게 sizeof에 포인터를 쓸 때입니다. 저도 무심결에 실수했네요. 메모리를 m.. 더보기
c언어 문자열 상수와 배열의 차이점 문자열 상수, 문자배열에 대한 이해 C언어 문자 배열을 보다가 생각난 김에 정리해 놓습니다. 다음의 두 코드 char *test = "abcdef"; 와 char test[] = "abcdef";의 차이점은 무얼까요? 배열과 포인터 그리고 메모리 두 가지의 차이를 이야기 하기에 앞서서 "abcdef"에 대해 짚고 넘어갑시다. "abcdef"란 코드는 컴퓨터가 프로그램을 메모리에 로드할 때 읽기 전용 메모리에 로드되는 문자열 상수입니다. 문자열 상수의 주소란 말이죠. 참고로 읽기 전용 메모리에는 프로그램 코드 라던가 상수가 로드 됩니다. 그럼 돌아와서 문자열 상수 주소를 char *test인 포인터에 넣느냐 아니면 char test[]인 배열에 넣느냐가 차이점 이군요. 둘의 차이는 다음과 같습니다. 1. .. 더보기