C언어
-
typedef는 자료형(데이터타입)에 이름, 별명을 붙여주는 기능이다. 위와 같이 int 자료형을 한글 '정수'로, float 자료형을 한글 '실수'로 이름을 짓고 각각 정수, 실수의 변수 정수변수, 실수변수를 선언하고 출력해도 위와 같이 출력된다. struct명이 긴 구조체의 경우 typedef를 이용해 간단하게 한글로 이름을 지어 사용할 수 있다. typedef 이름을 짓는 또다른 방법이 있다. 기존에 만들어진 구조체 Artwork_info를 복사하여 새로운 구조체를 생성하고 맨 앞에 typedef를 적고 {} 뒤에 이름을 써넣으면 된다. (이때 Artwork_info_another 는 지워도 상관없다) 이후 위와 같이 사용할 수 있다.
[ C언어 ] - typedef : 자료형에 네이밍하기typedef는 자료형(데이터타입)에 이름, 별명을 붙여주는 기능이다. 위와 같이 int 자료형을 한글 '정수'로, float 자료형을 한글 '실수'로 이름을 짓고 각각 정수, 실수의 변수 정수변수, 실수변수를 선언하고 출력해도 위와 같이 출력된다. struct명이 긴 구조체의 경우 typedef를 이용해 간단하게 한글로 이름을 지어 사용할 수 있다. typedef 이름을 짓는 또다른 방법이 있다. 기존에 만들어진 구조체 Artwork_info를 복사하여 새로운 구조체를 생성하고 맨 앞에 typedef를 적고 {} 뒤에 이름을 써넣으면 된다. (이때 Artwork_info_another 는 지워도 상관없다) 이후 위와 같이 사용할 수 있다.
2020.09.19 -
구조체(struct)의 생성은 다음과 같다. 예를 들어 작품 정보를 출력하고자 할 때 작품명, 제작자, 가격, 제작년도를 넣고자한다면 각각 char* 변수 name, maker를 생성하고 int 변수 price, yeaer를 만든다음 Artwork_info 라고 struct를 네이밍한 후 그 안에 변수들을 넣어주면 하나의 구조체가 완성된다. 만들어진 struct를 사용하기 위해서는 main 함수 안에서 각각의 변수에 값들을 선언하고 바로 출력하면 된다. 만들어진 struct를 다른 하나의 배열로 초기화할 수도 있다. 만들어진 struct를 적용할 새로운 변수 urArtWork를 생성하고 그 배열안에 각각의 값들을 순서대로 넣는다. 각각 출력하면 올바르게 struct가 적용되는 것을 볼 수 있다. 구조체 ..
[ C언어 ] - 구조체 struct구조체(struct)의 생성은 다음과 같다. 예를 들어 작품 정보를 출력하고자 할 때 작품명, 제작자, 가격, 제작년도를 넣고자한다면 각각 char* 변수 name, maker를 생성하고 int 변수 price, yeaer를 만든다음 Artwork_info 라고 struct를 네이밍한 후 그 안에 변수들을 넣어주면 하나의 구조체가 완성된다. 만들어진 struct를 사용하기 위해서는 main 함수 안에서 각각의 변수에 값들을 선언하고 바로 출력하면 된다. 만들어진 struct를 다른 하나의 배열로 초기화할 수도 있다. 만들어진 struct를 적용할 새로운 변수 urArtWork를 생성하고 그 배열안에 각각의 값들을 순서대로 넣는다. 각각 출력하면 올바르게 struct가 적용되는 것을 볼 수 있다. 구조체 ..
2020.09.19 -
일반적으로 어떤 변수를 출력할 때 그것은 해당 변수가 위치한 주소의 값을 출력하는 것이다. 위와 같이 a라는 것은 변수Ko가 가지고 있는 '값' 이며, a가 위치한 주소는 별도의 메모리 주소를 가지고 있는 것이다. 이러한 점에서 Ko == *&Ko 와 같은 뜻이라고 볼 수 있다. array 변수 자체는 array의 시작점 주소를 가지고 있다. 주소값을 출력해보면 Ko, &Ko[0], *&Ko 가 모두 같은 결과를 출력하는 것을 볼 수 있다. 변수 Ko 자체가 시작점 주소를 가지고 있으므로 &Ko[0]와 동일한 의미인 것이다. &와 *가 함께 있으면 서로 교차캔슬되어 *&Ko 와 Ko가 동일한 의미가 된다. 즉 *Ko == Ko[0] 이며 Ko[1]이 되기 위해서는 *(Ko + 1)로 표현 가능하다. st..
[ C언어 ] - 문자열 관련 함수를 직접 구현하기일반적으로 어떤 변수를 출력할 때 그것은 해당 변수가 위치한 주소의 값을 출력하는 것이다. 위와 같이 a라는 것은 변수Ko가 가지고 있는 '값' 이며, a가 위치한 주소는 별도의 메모리 주소를 가지고 있는 것이다. 이러한 점에서 Ko == *&Ko 와 같은 뜻이라고 볼 수 있다. array 변수 자체는 array의 시작점 주소를 가지고 있다. 주소값을 출력해보면 Ko, &Ko[0], *&Ko 가 모두 같은 결과를 출력하는 것을 볼 수 있다. 변수 Ko 자체가 시작점 주소를 가지고 있으므로 &Ko[0]와 동일한 의미인 것이다. &와 *가 함께 있으면 서로 교차캔슬되어 *&Ko 와 Ko가 동일한 의미가 된다. 즉 *Ko == Ko[0] 이며 Ko[1]이 되기 위해서는 *(Ko + 1)로 표현 가능하다. st..
2020.08.23 -
strlen() strlen() 함수는 string array를 하나 받고 해당 string의 총 길이를 int형으로 출력해준다. strcpy() strcpy() 함수는 어떤 string(문자 배열)을 다른 것에 복사하는 것이다. 2번째 string으로 넘어온 것을 1번째 string에 복사하는 것이다. char a 배열에 b 배열을 복사시킨 후 출력하면 a의 값이 b의 값으로 변경된 것을 볼 수 있다. strcmp() strcmp() 함수는 두 string을 비교하는 것이다. str1과 str2를 받고 두 string이 일치한다면 int형으로 return하게 된다 return 값이 0이라면 두 string이 일치한다는 뜻이며, 0이 아닌 음수나 양수라면 일치하지 않는다는 뜻이 된다. Computer s..
[ C언어 ] - 문자열 관련 함수strlen() strlen() 함수는 string array를 하나 받고 해당 string의 총 길이를 int형으로 출력해준다. strcpy() strcpy() 함수는 어떤 string(문자 배열)을 다른 것에 복사하는 것이다. 2번째 string으로 넘어온 것을 1번째 string에 복사하는 것이다. char a 배열에 b 배열을 복사시킨 후 출력하면 a의 값이 b의 값으로 변경된 것을 볼 수 있다. strcmp() strcmp() 함수는 두 string을 비교하는 것이다. str1과 str2를 받고 두 string이 일치한다면 int형으로 return하게 된다 return 값이 0이라면 두 string이 일치한다는 뜻이며, 0이 아닌 음수나 양수라면 일치하지 않는다는 뜻이 된다. Computer s..
2020.08.22 -
scanf() 는 사용자 입력값을 받아 프로그램에 입력할 수 있는(standard input) 함수이다. 이러한 특징에서 프로그램으로부터 출력값이 나오는(standard output) printf() 함수와 함께 다니는 함수로 볼 수 있다. scanf()는 stdio.h 라이브러리에 속해있다. 당연하게도 scanf() 함수를 사용하기 위해선 사용자 입력값이 어떤 데이터 타입인지 알아야 한다. 첫번째 printf 함수 출력 이후 scanf 함수로 사용자 입력값으로 정수를 받는다. 하지만 그 이후의 printf 함수가 출력되지 않고 return 값도 0이 아닌채 프로그램이 종료되는 것을 볼 수 있다. 이것은 단순히 cup이라고 입력할 시 프로그램 상 변수 cup 자체를 보내는 것이 아니라 cup 안에 들어 ..
[ C언어 ] - scanf()scanf() 는 사용자 입력값을 받아 프로그램에 입력할 수 있는(standard input) 함수이다. 이러한 특징에서 프로그램으로부터 출력값이 나오는(standard output) printf() 함수와 함께 다니는 함수로 볼 수 있다. scanf()는 stdio.h 라이브러리에 속해있다. 당연하게도 scanf() 함수를 사용하기 위해선 사용자 입력값이 어떤 데이터 타입인지 알아야 한다. 첫번째 printf 함수 출력 이후 scanf 함수로 사용자 입력값으로 정수를 받는다. 하지만 그 이후의 printf 함수가 출력되지 않고 return 값도 0이 아닌채 프로그램이 종료되는 것을 볼 수 있다. 이것은 단순히 cup이라고 입력할 시 프로그램 상 변수 cup 자체를 보내는 것이 아니라 cup 안에 들어 ..
2020.08.21 -
포인터는 C언어가 가지고 있는 매우 강력한 특징이다. 포인터는 어떤 것을 가리키는 변수라고 할 수 있다. 포인터는 *(asterisk)를 붙여 사용할 수 있다. *는 포인터를 선언할 때, 그리고 포인터가 가리키는 주소안의 값에 접근할 때 사용된다. int a = 10; int* p; 포인터의 선언은 위와 같이 사용한다. int형 변수 a를 가리키기 위해 int형 포인터 변수 p를 선언한 것이다. 하지만 포인터 변수p는 현재 어떤 것도 가리키지 않은 상태이다. integer의 크기는 4byte / float의 크기는 4byte / char의 크기는 1byte 이다. x64 프로세서에서 한 개의 처리 단위 메모리 주소의 크기는 8byte이고 변수a는 4byte이므로 위와 같이 차지하는 것을 볼 수 있다. 포..
[ C언어 ] - 포인터포인터는 C언어가 가지고 있는 매우 강력한 특징이다. 포인터는 어떤 것을 가리키는 변수라고 할 수 있다. 포인터는 *(asterisk)를 붙여 사용할 수 있다. *는 포인터를 선언할 때, 그리고 포인터가 가리키는 주소안의 값에 접근할 때 사용된다. int a = 10; int* p; 포인터의 선언은 위와 같이 사용한다. int형 변수 a를 가리키기 위해 int형 포인터 변수 p를 선언한 것이다. 하지만 포인터 변수p는 현재 어떤 것도 가리키지 않은 상태이다. integer의 크기는 4byte / float의 크기는 4byte / char의 크기는 1byte 이다. x64 프로세서에서 한 개의 처리 단위 메모리 주소의 크기는 8byte이고 변수a는 4byte이므로 위와 같이 차지하는 것을 볼 수 있다. 포..
2020.08.21