반응형 공부 자료실/C언어27 C언어 - 문자열과 포인터 문자열은 포인터 변수로 굉장히 많이 사용합니다. 일반적은 문자 배열과 다른 면을 비교해보겠습니다. *리터럴(literal)이란 변하지않는 데이터를 뜻합니다. 프로그램이 실행돼도 정대 변하지 않습니다. ex) int a=1; 에서 1이 리터럴입니다. 리터럴도 결국에는 메모리를 사용합니다. 포인터 변수는 메모리의 주소값을 저장하는 방식의 변수입니다. char *st = "안녕하세요"; 포인터는 선언과 초기화를 동시에도 하지만 char *st2; st2 = "어서오세요"; 선언 후 나중에 대입이 가능합니다. 변수처럼 값을 변경하는게 아닌 포인터 변수는 주소를 변경한다는 의미라 중간에 새롭게 리터럴(literal) 문자열을 대입할 수 있습니다. 포인터 변수에 저장된 리터럴 문자열은 읽기전용입니다. 그렇기 때문에.. 공부 자료실/C언어 2020. 6. 29. C언어 - 문자열 C언어에서 문자열은 문자의 배열로 저장합니다. 문자열의 표현은 "" 큰따옴표로 합니다. char st[11] = "안녕하세요"; 문자의 배열이기 때문에 문자 하나씩 저장할 수 있습니다. char st[5] = { 'a', 'b', 'c', 'd', '\0'}; 여기서 한가지 중요한 건 한글은 한 글자에 2byte씩 차지합니다. "안녕하세요"는 5글자로 5X2=10 을 차지합니다. 하지만 배열의 크기를 11로 선언했습니다. 위에서도 보면 문자열은 저장할때 마지막에 NULL(\0)을 붙여야 합니다. 하지만 저장하는 문자열보다 크게 배열의 크기를 선언하면 자동으로 NULL(\0)이 채워지기때문에 저장할 문자열보다 배열을 크기 선언하면 됩니다. 만약 필요한 문자열이 얼마 큼의 배열의 크기를 해야 할지 모른다면 .. 공부 자료실/C언어 2020. 6. 29. C언어 - 구조체 배열은 자료형이 같은 데이터를 묶어서 사용할 수 있습니다. 자료형이 다른 데이터를 묶기 위해서는 배열을 사용할 수 없습니다. 이때 구조체를 사용해서 자료형이 다른 데이터들도 묶어서 사용할 수 있습니다. 구조체는 struct 키워드를 사용합니다. 기본 형식은 struct 구조체 이름 { //멤버 자료형 이름; 자료형 이름; 자료형 이름; 자료형 이름; . . . }; 구조체 내부의 선언된 변수들을 멤버라고 합니다.구조체 선언이 끝나고 마지막에 ;(세미콜론)을 꼭 붙어야 합니다. 구조체를 작성해보면서 다양한 선언 방식을 알아보겠습니다. #include struct student { char name[20]; int age; float grade; }; int main(void) { struct student.. 공부 자료실/C언어 2020. 6. 27. C언어 - 배열 배열을 동일한 자료형의 데이터를 여러 개 저장할 수 있는 방법입니다. 보통의 변수는 1개의 값만 저장이 가능하기 때문에 다수의 데이터를 저장하기 위해서 배열이 필요합니다. 배열은 기본형은 //자료형 이름[배열 크기] //ex) int array[10]; //10개의 정수를 저장할 수 있는 배열 자료형 이름[배열 크기]가 필요합니다. 배열 크기는 항상 상수를 사용해야 합니다. 배열도 초기화를 해야 합니다. // {}를 사용해서 초기화 int array[10] = { 0 }; // 모두 0으로 초기화 int array[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 배열을 크기 만큼 값을 입력하여 초기화 초기값도 다양한 방법으로 입력할 수 있습니다. 배열을 반복문에서 사용할 때 인덱스를 넘어가.. 공부 자료실/C언어 2020. 6. 23. C언어 - 변수의 생존기간과 저장 유형 지정자 변수는 생존기간에 따라서 분류하게 되면 정적 할당(static allocation)과 자동 할당(automatic allocation)으로 보통 나눌 수 있습니다. 정적 할당(static allocation)은 프로그램이 실행되는 동안 유지 자동 할당(automatic allocation)은 선언된 블록이 종료되면 같이 소멸됩니다. 전역 변수는 정적 할당입니다. 지역 변수는 기본적으로는 자동 할당입니다. 하지만 지역 변수도 정적 할당으로 사용할 수 있습니다. 바로 저장 유형 지정자(storage class specifier)를 통해서 변경이 가능합니다. 그러면 저장 유형 지정자를 한번 알아보겠습니다. 먼저 auto지정자입니다. auto지정자는 기본적으로 지역 변수에 자동으로 할당됩니다. (자동 변수라고 .. 공부 자료실/C언어 2020. 6. 22. C언어 - 지역변수, 전역변수 변수는 선언되는 위치에 따라서 성질이 변합니다. 대표적으로 지역 변수(lacal variable)와 전역 변수(global variable)가 있습니다. 지역 변수는 이름 그대로 지역에서만 사용하는 변수입니다. 블록({}) 안에서 선언되면 선언된 블록 안에서만 사용이 가능합니다. 전역 변수는 지역 변수와 다르게 전역에서 사용이 가능합니다. 3개의 변수의 합을 더하는 코드를 작성했습니다. int num1 = 1; int num3 = 3; void sum_1(int a); int main(void) { int num2 = 2; sum_1(num2); return 0; } void sum_1(int a) { printf("%d + %d + %d = %d \n", num1, a, num3, num1 + a + .. 공부 자료실/C언어 2020. 6. 22. C언어 - 함수(function) 함수는 프로그램의 기본 구성 요소입니다. printf(), scanf()등도 표준 라이브러리 함수입니다. 함수의 형태에대해 알아보겠습니다. 반환형 함수명(매개 변수, 매개 변수 ......) { 코드 } 반환형은 함수가 실행을 종료한 후 호출된 곳으로 반환하는 값으로 int, float, char등 자료형이 들어갑니다. 아무값도 반환하지 않으려면 void를 사용하면 됩니다. 반환형을 아무것도 사용하지 않으면 int형으로 반환되나 int형으로 반환을 해도 꼭 명시해주는게 좋습니다. 함수명은 함수를 호출할때 사용할 이름으로 첫글자에 숫자가 들어갈 수 없고 중복된 이름이 사용 불가능 합니다. 특수문자는 _ 만 사용 가능합니다. 매개 변수는 파라미터(Parameter)라고도 합니다. 자료형과 변수명으로 구성되며.. 공부 자료실/C언어 2020. 6. 18. C언어 - break, continue, return swith문에서 등장했던 break는 루프를 벗어날 때 사용합니다. break는 swith문에서만 아니라 다양하게 사용할 수 있습니다. 대표적으로 반복문인 while문에서 보면 int num; while (1) { printf("숫자를 입력해주세요(3입력시 탈출) : "); scanf("%d", &num); printf("입력된 숫자 : %d \n", num); if (num == 3) { printf("탈출 \n"); break; } } printf("종료 \n"); while (1)은 무한 반복입니다. 하지만 3을 입력 받으면 break를 이용해서 while문을 벗어날 수 있습니다. 이렇게 while문 내에 조건문을 넣어 무한루프에서 벗어날 수 있게 만들어 주는 경우도 있습니다. for문에서도 예를들.. 공부 자료실/C언어 2020. 6. 17. C언어 - 반복문 for(), while() 반복문은 정해진 과정을 원하는 결과가 나올 때까지 여러 번 반복하게 아는 것입니다. 예를 들어 조건문을 이용해서 성적과 등급을 구하는 코드를 작성했다고 했을 때 성적을 구해야 하는 학생이 40명이 있다고 한다면 40번을 내가 직접 반복해야 합니다. 하지만 반복문을 작성해서 컴퓨터가 40번을 대신 해준다면 더 효율이 높은 작업을 할 수 있습니다. 먼저 for문 부터 알아보겠습니다. for(초기식;조건식;증감식) { 코드 } 초기식은 for문이 반복문을 실행하기 전에 한 번만 실행이 됩니다. 주로 변수의 초기화를 하는 용도로 사용됩니다. 조건식은 for문의 반복을 계속할지 안 할지를 결정해주는 부분입니다. 그래서 참(True)인지 거짓(False)인지를 출력해주는 관계, 조건 연산자를 사용합니다. 증감식은 .. 공부 자료실/C언어 2020. 6. 16. C언어 - 조건문 if(), swith() 지금까지 출력, 입력, 연산자를 배웠습니다. 이제 좀 더 효율적이게 사용하기 위한 조건문을 알아보겠습니다. 조건문은 if와 swith가 있으며 if문부터 알아보겠습니다. if문은 if, else, else if로 작성할 수 있으며 if - else, if - else if, if - else if - if로 작성할 수 있습니다. if를 사용하는 방법은 if( 조건식 ) { 코드; } if의 조건식이 참이라면 작성된 코드를 실행합니다. else if는 if의 뒤에 나와야 합니다. if( 조건식 ) { 코드; } else if( 조건식 ) { 코드; } if의 조건에 부합되지 않는(거짓을 출력한)경우 다음 else if의 조건으로 다시 처리합니다. else는 if뒤에나 else if뒤에 나와야 합니다. el.. 공부 자료실/C언어 2020. 6. 15. C언어 - 연산자 c언어의 연산자를 차례대로 알아보겠습니다. 대입 연산자 int a = 10; 오른쪽 값을 왼쪽에 대입하는 연산자입니다. 산술 연산자 +(더하기), -(빼기), *(곱셈), /(나눗셈), %(나머지) 쉽게 예제로 보면 printf("%d \n", 10 + 3); printf("%d \n", 10 - 3); printf("%d \n", 10 * 3); printf("%d \n", 10 / 3); printf("%d \n", 10 % 3); 차례대로 결과가 나옵니다. 여기서 +(더하기), -(빼기), *(곱셈), /(나눗셈)은 사칙연산으로 값이 나오지만 %는 나누고 나머지 값만 출력이 됩니다. 증감 연산자 증감 연산자 ++과--는 값에 어디에 붙느냐에 따라 값이 조금 다르게 나옵니다. int a = 10; p.. 공부 자료실/C언어 2020. 6. 12. C언어 - scanf() scanf()는 Stdio.h 헤더 파일 안에 있는 표준 라이브러리 함수 중 하나로 입력된 데이터를 지정된 형식으로 변환, 변수에 저장해주는 라이브러리 함수입니다. 대부분은 형식은 printf()와 차이가 없으므로 printf()를 참고하면 됩니다. C언어 - printf() printf는 Stdio.h 헤더 파일 안에 있는 표준 라이브러리 함수 중 하나입니다. f는 formatted를 뜻합니다. 출력하기 위해 여러 포맷을 지정할 수 있다는 의미입니다. printf("Hello World!"); 정말 많이 본 코드� responding.tistory.com 먼저 scanf()를 사용하기 전에 자료형들의 정확한 크기를 알고 가는 게 좋습니다. sizeof()는 변수, 상수, 자료형들의 크기를 바이트로 표시.. 공부 자료실/C언어 2020. 6. 11. 이전 1 2 3 다음 반응형