내 잡다한 노트
C언어) 입력, 배열, 문자열 본문
<입력>
scanf ( "입력받을 문자의 서식", 변수의 주소);
변수 앞에 &를 붙이게 되면 이는 해당 변수의 주소를 가리키게 된다.
입력할때 일반 변수들에는 &을 붙여서 주소를 보내도록 하고 (call by reference), 배열의 이름과
같이 &를 붙이지 않아도 주소를 가리키는 것들은 &을 떼고 인자로 넣어주면 된다.
그리고 scanf는 #define _CRT_SECURE_NO_WARNINGS 을 상단에 입력해야 보안경고가 안뜬다
그래서 scanf_s를 사용하도록 하자.
<자료형의 확장>
정수와 실수를 함께 연산하면 결과값은 실수로 나온다. 왜냐하면 실수가 정수보다 표현
범위가 넓기 때문이다. 즉, 표현 범위가 넓은 쪽으로 자동 변환된다.
<논리 연산자>
&& = and
|| = or
! = not
<불 자료형>
stdbool.h 헤더파일을 입력하면 다른 언어처럼 true와 false를 사용할 수 있다.
<포인터>
포인터는 주소를 가리킨다. 이름만 포인터일뿐 변수와 같다.
포인터 변수를 선언할대는 담고자 하는 자료형에 *를 붙여서 선언한다.
예를 들어, int *p = NULL; 포인터를 초기화할대는 NULL로 해줘야한다.
TMI ) 변수를 초기화하지 않았을때의 초기값은 쓰레기값이 들어간다.
메모리 주소를 출력하고 싶을때는 서식 지정자 %p를 사용한다.
메모리 사용 패턴 : malloc -> 사용 -> free
<배열>
배열은 크기를 지정해서 생성해야 한다.
ex) int arr3[5] = {5, 10}; // 0번째 인덱스의 값을 5, 1번째 인덱스의 값을 10 나머지는 모두 0으로 초기화
만약 초기화하지 않는다면 대부분 쓰레기값이 나오게 된다.
배열은 선언한 크기만큼 주소가 연속적으로 연결되어 있다. 즉, 연속된 각 원소끼리의 주소는
자료형의 크기만큼 차이가 난다.
배열의 크기를 구하는 방법은 sizeof를 활용한다.
sizeof(arr) / sizeof(arr[0]) 을 한다면 배열의 길이도 구할 수 있다.
<문자열>
char의 배열로 문자열을 만들 수 있다.
문자열로 만들었다면 서식 지정자는 %s가 된다.
문자열의 마지막 남는 자리에 0, NULL, \0의 값을 넣어준다 이것들은 전부 같은 것으로 종료 문자를
가르킨다.
주의할 점이 있는데, 문자열에 값을 대입하고 싶다면 선언할 때 바로 값을 넣어줘야한다.
선언 이후에 값을 대입하려하면 오류가 나는데, 선언을 한 이후에 값을 대입하고 싶다면
ch[0] = 'a';, ch[1] = 'b';와 같이 하나하나 저장해야한다.
입력을 받는다면 문자열 선언 이후에 해도 상관없다. scanf를 사용할때 &를 붙여주었었다.
하지만 배열의 경우엔 &를 쓰지 않고 변수의 이름만 써도 된다.
그 이유는 배열의 이름에 주소를 담고있기 때문이다.
문자열 길이 구하기 함수는 string.h 파일
'Language > C언어' 카테고리의 다른 글
자주 쓰이는 C언어 헤더파일 간단한 설명 (0) | 2023.05.13 |
---|---|
C언어 배열포인터 (0) | 2023.05.13 |
memset, strcpy (0) | 2023.03.20 |
C언어) 포인터, 이중포인터, 포인터와 배열 (0) | 2023.03.12 |
C언어) 주석, 출력, 자료형 (0) | 2023.03.06 |