주관적인 세가지의 중점
이 언어는 어떤 자료형이 있지?
이 언어는 어떤 문법이 있지?
이 언어는 어떤 라이브러리가 있지?
+ 어떤 개발도구가 좋을까?
c 언어, 너가 궁금해졌다.
●자료형
단일 자료형이 있다.
int, char, void, ...
숫자, 문자, 공허의유산이 한국서버 기준 내일 아침 6시에 시작
자료형을 사용하여 변수를 하나 이상 선언할 수 있다.
int a;
int b,c,d;
자료형은 만들 수도 있다. main함수 위에 사용한다-> 어디서든 된다고 한다. 고맙습니다.
typedef int myint;
복합 자료형이 있다.
struct, ...
구조체는 선언하고 정의할 수 있다.
첫번째 방법이다. 다시 쓰기 위해서는 다시 선언해야 한다.
struct{
int x;
int y;
char a;
}structname;
두번째 방법이다. 다시 쓰기 위해서는 struct structname 이라고 써야 한다. 여기 헷갈린다.
struct structname{
int x;
int y;
char a;
}name;
세번째 방법이다. 자료형처럼 사용할 수 있다. 다시 쓸 때는 structname 만 쓴다. 이거 좋아.
typedef struct structname{
int x,y;
}
여기서 질문있습니다.. 이렇게 8가지가 헷갈리는데 쓰는거/안쓰는거랑 각각의 특징이 궁금합니다.
|
struct { |
struct a{ |
struct { |
struct a{ |
|
typedef struct { |
typedef struct a{ |
typedef struct { |
typedef struct a{ |
포인터가 있다.
선언할 때 *를 붙이면 주소를 담기 위한 변수가 된다.
int* a, b;
int *a, b;
사용할 때 *를 붙이면 해당 주소 안의 값의 자리를 직접 사용하게 된다.
사용할 때 &를 붙이면 해당 변수의 주소를 가져온다.
int a;
int *b;
int* c = &a;
b = &a;
a=*b; // a는 자기 자신의 주소를 값으로 쓰게 된다. 마트료시카 같다
●문법
명령어는 세미콜론 ; 으로 끝나고, 구분한다.
;
변수를 선언할 때는 자료형을 쓰고 변수명을 쓴다.
int a;
변수를 사용할 때는 변수 이름만으로 사용한다. 변수에 값을 대입할 수 있다.
a = 3;
오른쪽에서 왼쪽으로 대입되며, 상수에는 값을 대입할 수 없다.
3 = a; // error
또한 c는 다음과 같은 다중 대입이 불가능하다.
a,b = 1,2;
함수를 선언할 때는 반환되는 변수의 자료형을 쓰고 함수명 우측에 소괄호의 짝 () 안에 전달할 매개변수를 써주어야 한다.
int fx(int a, char b);
선언은 생략 할 수 있다. 그러나 c에서는 사용 시점보다 먼저 쓴것만 쓸 수 있기 때문에 선언을 사용한다.
또한, 함수의 반환형의 갯수는 1 이하이다. 만약 반환형을 다르게 해주고 싶을 때는 특별한 방법으로 해결할 수 있다.
(char, int) fx(int a, char b); // error
명령어의 블락을 만들고 싶을 경우 중괄호의 짝 {} 를 쓴다.
{
int a;
a = 3;
}
함수를 정의할 때는 선언문을 그대로 쓰고, 이어서 함수 내용을 아래에 블락으로 추가한다. 그리고 블락의 마지막에 값을 반환하는 return 명령어를 사용한다.
int fx(int a, char b)
{
int a;
a = 3;
return a;
}
함수의 반환형과 return 되는 값의 반환형은 같아야 한다.
int fx(int a, char b) // 'int' error -> change to char
{
int a;
char c;
a = 3;
return c; // or 'c' error -> change to a
}
매개변수도 함수 내에서 변수로 쓰이기 때문에 되도록 같은 이름으로 변수를 생성하지 않는다.
int fx(int a, char b)
{
int aa;
aa = 3;
}
함수를 사용할 때는 함수명을 쓰고 우측에 매개변수가 담긴 소괄호를 쓴다.
fx(1,'a');
반환형이 있는 함수는 함수의 결과를 변수에 대입할 수 있다.
=반환형이 있는 함수를 결과를 대입하기 위해 사용할 수 있다.
=반환형이 없는 함수도 있고, 반환형과 상관 없이 구동 자체만으로 쓰임새가 있는 경우도 있다.
a = fx(1,'a');
fx(1,'a');
이 때, 함수의 선언이나 정의 시에 작성한 파라미터의 종류와 순서를 지켜야 한다.
=순서가 바뀌었다는 것은 사실 각각의 파라미터의 자료형을 맞추지 않고 쓴 것이다.
a = fx('a',1); // error : 'a' is char, but 1st parameter is int. and, 1 is int, but 2nd parameter is char.
●라이브러리
c에서는 여러가지 라이브러리 함수가 있다.
사용자에게 변수를 받아서 저장하는 함수가 있다.
scanf("%d",&a);
원하는 문자열이나 변수를 출력하는 함수가 있다.
printf("출력되는 함수입니다. 이것은 그냥 문자열이고 %d 는 숫자 파라미터를 받아서 출력합니다.",a);
졸리다.. 로도는 안샀는데 이번주 로도번호가 그냥 1 7 13 22 32 41 이었으면 좋겠다.
돈 벌어서 슢컴터사고싶다.
c++해야되는데 c 하고있었다.
치매에너지 12등급이 된것 같다.
자살해야겠다..
함수 안에서도 typedef 됨.
struct username 으로 선언했으면 나중에 사용할때
캬.. 너 이렇게 공부하면 안됨
USERNAME.szData 로 멤버선언해야한다이말임니다
ㄴ 개그중?
궁금한게 있는데요, 본문 수정하였습니다. 표 부분을 봐주시면 감사하겠습니다.
뭐하는거임? ㅋ