프로그래밍 39

자료형

자료형의 종류 : 정수 자료형, 실수 사료형, 문자 자료형, 논리 자료형 (참과 거짓을 따짐) 1 Byte char (문자 자료형), bool (논리자료형) 2 Byte short (정수 자료형) 4 Byte int, long (정수 자료형), float (실수 자료형) 8 Byte long long (정수 자료형), double, long double (실수 자료형) unsigned 음수를 사용하지 않는다. (이진법에서 맨 앞쪽 비트 까지 숫자를 표현하는데 사용한다.) signed defalt 값이다. 캐릭터 형이라고 부른다. 문자 자료형이지만 기본적으로 정수값을 저장한다. (ASCII 코드표 에서 알아서 변환하여 저장) char ch1 = 97; cout

프로그래밍/C++ 2021.09.07

[C언어]포인터 상수와 상수 포인터(const int* 와 int* const)

int *ptr ( ptr은 + 가르킨다(*) +int형을 ) ptr은 int형의 무언가를 가르킴 (주소를 저장하여 가르킴) ptr이 가르키는건 int형 무언가 int const *ptr (ptr은 + 가르킨다(*) + int const 형을) =const int *ptr ptr은 const int형의 무언가를 가르킴 ptr이 가르키는건 const int형 무언가 (ptr이 가르키는 건 변할 수 없음) int *const ptr (const ptr은 + 가르킨다(*) + int 형을) const ptr(변하지 않는 값을 가진 ptr)은 int형의 무언가를 가르킴 const ptr이 가르키는건 int형 무언가 (ptr의 값 즉, 저장된 주소값을 변하게 할 수 없음.) int a = 10; int b; co..

scanf 사용시 오류 (scan_f)

#define _CRT_SECURE_NO_WARNINGS (소스코드 첫 부분) #pragma warning(disable:4996) (소스코드 첫 부분) _CRT_SECURE_NO_WARNINGS (프로젝트 속성\c/c++\전처리기\전처리기 정의에 추가) 소스파일 만들 시 Security 체크 해제 sizeof 연산자를 세번째 인자에 넣는다. char str[50]; scanf_s("%s", str, sizeof(str)); scanf 가 버퍼 오버플로우에 취약한 문제때문에 scanf_s를 대신 사용하도록 한다. 오버플로우란 할당된 버퍼에 들어갈 수 있는 양보다 더 많은 양을 넣게 되면 프로그램이 멈추는데 이것을 해커들이 이용했기 떄문에 문제를 해결하기 위해 scanf_s가 등장했다. %d, %f와 같은..

[C언어]typedef와 구조체

typedef int main() { typedef int int32; } typedef 는 기존의자료형(int) 에다가 별명 (int32)을 붙여주는것이다. int와 int32랑은 같은의미를 말한다. - 예시 - typedef int pair[2]; pair point = { 3,4 }; pair은 2개짜리 인트형 배열을 의미한다. int point[2] = { 3,4 }와 같은 의미이다. typedef를 사용하여 문자열 담기 char* name = "hello"; char name[] = "hello"; typedef char* String; String name = "hello"; char형 포인터에 새로운 이름(String)을 만들어 준다. 즉, 자료형에 특별한 의미가 부여될떄 typedef를 쓴..

변수

변수 : 값을 담을수 있다. A, b는 변수이다. 1 int a 가능 8 int 쇼미 가능하지만 쓰지마라 깨짐 2 int A 가능, 대문자 소문자는 서로 다르게 쓰임 9 int !@asd 특수문자 사용불가 3 int i a 변수사이에 띄어쓰기 안된다. 10 int _ad 언더바는 맨앞 사용 가능 4 int a_a 언더바는 가능하다. 11 int asd!@ 특수문자는 _랑 $ 만 가능 5 int 123a 맨앞자리 숫자 올 수 없다. 12 int break 사용되는 키워드는 불가능 6 int a123 가능 13 int namespace 실제 쓰고 있는 변수 불가능 7 int asdasdfasdfsdfhsdajfhasjdhfjsadhfjhasdfjhasdjfhasjdhfjashdf 긴 거도 가능 위에서 A는 ..

프로그래밍/C++ 2021.09.04

기본적인 코드 분석(main, namespace, void, cout 등)

#include 외부에 선언된 함수나 상수 등을 사용하기 위해서 헤더파일의 내용을 현재파일에 포함할때 사용 #define 은 함수나 상수를 단순화해주는 매크로를 정의할 때 사용 iostream input, output의 약자이며 라이브러리이다. C 프로그래밍 언어의 stdio.h와 같은 역할을 한다. namespace c++프로그램을 작성할때 발생하는 이름에 대한 충돌을 방지 같은 문법이 두개이면 컴퓨터는 컴파일 에러(컴파일단계에서 문법에 오류가 있을 경우 빌드하지 못할때)를 유발한다. c++프로그램 표준구성 요소인 클래스, 함수, 변수 등은 std라는 이름공간에 저장되어있다. 따라서 c++프로그램에서 표준헤더파일인 iostream 내의 정의를 사용하려면 다음과같이 사용해야한다. 1 using names..

프로그래밍/C++ 2021.09.04

소스파일(source file)에서 실행파일(executable file) 생성원리

1 소스파일(source file) 작성 코드작성 2 선행처리기(preprocessor)에 의한 선행처리 선행처리문자(#)로 선행처리, 컴파일러가 작업하기 좋도록 소스를 재구성해주는 역할 3 컴파일러(compiler)에의한 컴파일 소스파일을 기계어로 변환 기계어로 변환된 파일을 오브젝트파일(object file) (확장자 : .o, .obj) 4 링커(linker)에의한 링크 하나 이상의 오브젝트 파일과 라이브러리 파일, 시동코드 등을 합쳐 하나의 파일로 만드는 작업을 링크 라고 한다. 최종적으로 링크를 통해 하나의 실행파일로 만드는 것을 분할 컴파일 이라고 한다. 5 실행파일(executable file)의 생성 소스파일이 선행처리기 컴파일러 링커를 거쳐 실행파일로 변환 (확장자 : .exe)

프로그래밍/C++ 2021.09.04

"const char *" 형식의 인수가 "char *" 형식의 매개 변수와 호환되지 않습니다.

아래와 같이 코딩을 하다가 오류가 발생함 void print_nospace(char *str) { 중략 } int main() {print_nospace("Hello, World!\n");} 매개변수로 char *str를 사용하는 도중에 에러가 발생. 매개변수로 const char *str 입력 "Hello, World!\n" 은 변수가 없는 문자열 프로그램상에서 주소값으로 접근할 수 없기때문에 함수의 매개변수로 넘겨주려면 const를 적어줘야 한다. 즉, 대입하려는 문자열이 문자열 상수 이기때문에 const 를 붙여준다 C에서는 문자열 리터럴이 char의 배열이지만, C++에서는 const char의 배열이다. 이 오류는 비쥬얼 스튜디오 2017이상에서 발생.