반응형 전체 글100 C언어 - 포인터와 다중 포인터 앞에서 간간히 포인터를 사용했습니다. 오늘은 포인터와 다중 포인터에 대해 알아보겠습니다. 포인터는 메모리의 주소를 저장하는 변수입니다. 메모리에 있는 데이터는 결국 메모리 주소에 저장이 되기 때문에 직접적인 접근이 가능해집니다. 포인터의 선언은 다음과 같습니다. 자료형 *변수이름; 예제로 살펴보겠습니다. #include int main(void) { int num = 50; //&는 주소 연산자로 변수의 이름을 받으면 해당 변수의 주소를 반환합니다. printf("num의 값 = %d \n", num); printf("num의 주소는 = %p \n", &num); int *p_num = # printf("*p_num의 값 = %d \n",*p_num); printf("*p_num에 저장된 주소는 .. 공부 자료실/C언어 2020. 7. 3. C언어 - typedef typedef는 기존의 자료형에 새롭게 새롭게 별칭을 부여할 때 사용합니다. typedef의 형식을 알아보겠습니다. typedef 기존type 별칭; typedef를 이용하면 구조체, 공용체, 열거형도 조금더 간단하게 사용할 수 있습니다. 예제를 통해 보겠습니다. #include typedef struct student{ char name[20]; int age; char address[30]; }STUDENT; //새로운 STUDENT 키워드를 부여 int main(void) { STUDENT stu; stu.age = 20; printf("나이는 = %ㅇ \n", stu.age); return 0; } struct앞에 typedef을 선언하고 정의뒤에 새로운 별칭을 추가로 선언해주면 구조체 변수를 선.. 공부 자료실/C언어 2020. 7. 2. C언어 - 열거형 열거형(enumeration)은 정수형 상수를 사용하기 편하게 이름을 부여해서 나열해 놓은 자료형입니다. 보통 변수를 상수로 만들기 위해서는 const를 자료형 앞에 붙여줍니다, const int num = 0; 하지만 선언할 양이 점점 많아지면 관리하기가 힘들어집니다. 이때 열거형을 사용합니다 열거형은 enum 키워드를 사용합니다. 열거형을 정의하는 방법은 다음과 같습니다. enum 열거형이름 { 상수1, 상수2, 상수3, . . . }; 구조체나 공용체랑 다르게 자료형 없이 정의해야 합니다. 열거형도 사용하기 위해서는 구조체나 공용체 처럼 변수로 선언해야 합니다. enum 열거형이름 변수이름; 정의하고 바로 변수 선언도 가능합니다. enum 열거형이름 { 상수1, 상수2, 상수3, . . . } 변수.. 공부 자료실/C언어 2020. 7. 2. C언어 - 공용체 공용체는 얼핏 보면 구조체와 비슷하지만 메모리를 사용하는 게 다릅니다. 구조체는 멤버들이 각각 메모리를 할당해주지만, 공용체는 멤버 변수 중 메모리 크기가 가장 큰 만큼만 할당됩니다. 할당된 메모리를 모든 멤버 변수가 공유를 하기때문에 모든 멤버 변수들의 값을 저장할 수 없는 경우도 있습니다. 정의 및 선언방법, 사용방법은 구조체와 비슷합니다. 대신 공용체는 struct가 아니라 union을 사용합니다. union 공용체이름 { //멤버 자료형 이름; 자료형 이름; 자료형 이름; 자료형 이름; . . . }; union 구조체이름 변수이름; 그러면 구조체와 공용체의 차이점을 예제를 통해 보겠습니다. #include union uni_1 { char st[30]; int num; float num2; };.. 공부 자료실/C언어 2020. 7. 1. C# - 프로젝트 생성 -Visual studio 2017을 사용했습니다. C#은 마이크로 소프트에서 C++를 기반으로 개발한 객체지향 언어입니다. C++기반이지만 JAVA와 비슷한 특징을 많이 가지고 있습니다. C#이란 이름은 C++ ++를 C#으로 변경해서 지은 이름입니다. C#은 .NET 프레임워크를 이용하여 프로그램을 구성할 수 있게 해 줍니다. * .NET 프레임워크는 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경입니다. 많은 라이브러리를 기본적으로 제공하기 때문에 굉장히 사용하기 편합니다. C# 프로젝트를 생성해보겠습니다. 메뉴의 파일 -> 새로 만들기 -> 프로젝트 클릭 여러 가지 프로젝트 형식이 있지만 이번에는 콘솔 앱으로 생성하겠습니다. 설치된 항목에서 Visual#C -> 콘솔 앱(.NET Fr.. 공부 자료실/자료실 2020. 7. 1. C언어 - 문자열 변환 문자열은 어떤 값인가에 따라서 정수형이나 실수형으로 변환이 가능합니다. 먼저 sscanf()_s에 대해 알아보겠습니다. sscanf()_s는 문자열에서 원하는 자료형의 데이터를 읽어내서 반환합니다. *sscanf()도 사용은 가능하나 warning이 발생합니다. 해당 st 문자열에서 정수형 형식을 읽어서 정수형 값을 num변수에 저장하는 코드입니다. sscanf(st, "%d", &num); sscanf()_s함수의 원형은 다음과 같습니다. int sscanf_s(const char* str, const char* format, ...); 보기만 해서는 잘 이해가 안 갈 수 있습니다. format을 어떤 식으로 처리하냐에 따라서 굉장 다양하게 사용이 가능합니다. 예제와 함께 보겠습니다. #include .. 공부 자료실/C언어 2020. 6. 30. C언어 - 문자,문자열의 입력, 출력 scanf()와 printf()로 문자, 문자열의 입출력을 실행합니다. char ch; scanf("%c", &ch); printf("%c \n", ch); char st[30]; scanf("%s", &st); printf("%s \n", st); 하지만 scanf()와 printf()는 문자, 문자열 외에도 처리하는 자료형이 많기 때문에 무거운 편입니다. 그래서 문자와 문자열에 사용하는 입출력 함수에 대해 알아보겠습니다. 문자 입력 함수에 대해 알아보겠습니다 getchar()는 하나의 문자를 읽어서 반환하는 함수입니다. char ch; ch = getchar(); 입력할 때는 여러 개의 문자를 입력할 수 있지만 반환은 첫 번째로 입력된 한 개의 문자만 반환합니다. conio.h의 _getch()또는 .. 공부 자료실/C언어 2020. 6. 30. 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. 이전 1 ··· 4 5 6 7 8 9 다음 반응형