본문 바로가기

C언어

컴프 6주차 1차시

교재 12장


문자와 문자열 구분이 확실함. c언어는
문자는 글자 하나. 글자 하나는 ''으로 다룸
문자열은 한글자 이상. 문자열은 ""로 다룸
문자와 문자열은 다르다.
'A'와 "A"는 다르다.
문자는 있는 만큼 메모리를 차지하고
문자열은 메모리상에 \0가 추가로 차지됨.
문자는 char
문자열은 string
문자는 모두 아스키코드 값을 가진다. A는 65 a는 97
숫자 0이 있고 문자 0이 있다. 문자 0의 아스키코드값은 48이다.(0도 외우기)
문자열을 나타내는 데이터타입이 따로 없다. 그래서 char을 이용하여 배열로 선언한다.
str이라는 변수는 문자열을 가질 수 있는 것. str[10]은 최대 9개의 문자까지 가진다(\0이 들어가므로)

문자열은 끝에 \0이 있고 문자형 배열은 \0이 없다. 
문자형배열
-char ch [5] = {'a','b','c','d','e'};
문자열을 갖는 변수 ''로 할 때는 \0을 넣어주고 ""로 넣어줄 때는 그냥 4개만.
-char str[5] ={'a','b','c','d','\0'};
-char str2[5] = "abcd";
문자열 초기화
char str3[] = "aBcDe"; // str3[6]로 자동 설정된다 
str3 ="xyz" //대입연산으로 값을 바꾸는 것은 불가이다. 배열의 문자열은 선언했을 때만

scanf(“%s", str); // 문자열 변수의 입력에서는 &를 붙이지 않는다. 사실은 str ≡ &str[0]
배열명 자체가 주소의의미를 가지고 있으므로 &를 쓰지 않는다. 일반변수는 주소가 아니라 값이라 &를 표시하는 것이고, 문자열은 주소를 가리키기 때문에 &를 붙이지 않는다. 
scanf(“%s", &str[0]); //이렇게는 쓸 수 있다. 0부터 순차적으로 쭉 들어감. 근데 잘 안쓴다.

str[10]="abcd"라고 할 때 str의 sizeof 값을 구하면 10이다. 그런데 글자는 5글자.
문자열의 글자수를 세는 방ㅇ법은 \0이 나올 떄까지 횟수를 세는 것.
방법 2: for (i = 0; str[i] != '\0'; i++) 
  printf("%c", str[i]); 

새로운 문자열을 만든 후에는 str2[j] = '\0'; 를 써줘야 한다.

소문자와 대문자의 아스키코드 차이는 32이다. 
'A' - 32 => 가능하다. char 와 int 중에 int가 더 쏌. 자동형변환이 된다. 

for(i = 0; str[i] != '\0'; i++);

숫자 데이터는 사이즈를 보내줘야 하지만 문자열 배열의 경우에는 글자 수를 보내주지 앟아도 된다. 문자열 배열은 문자의 크기를 보내지 않아도 된다. 사용자정의 함수 함수의 매개변수로 배열을 보낼 때는 데이터 타입과 배열명과 []는 비워둔다. 1차원 배열일 때. 2차원 배열 때는 열 번호를 쓰고 행 번호는 쓰지 않는다.  

'C언어' 카테고리의 다른 글

컴프 7주차  (0) 2023.10.14
6주차 복습  (0) 2023.10.10
변수  (0) 2023.09.23
[JAVA] 3주차  (0) 2023.09.18
3주차 복습  (0) 2023.09.16