목록분류 전체보기 (220)
NULL

class는 중복 클래스가능 id는 중복 아이디 불가능 , 태그에서 중복되는 아이디가 있으면 안된다. class는 여러 클래스가 가능한 반면 id는 하나만 가능하다. 여러요소를 스타일링 한다면 class 하나만 스타일링하고 싶다면 id css에서 class는 .으로 선언했지만 id는 #으로 선언해준다.
폰트 크기 폰트 크기도 픽셀로 설정하는 경우가 많다. 폰트 크기가 16px로 설정되있으면 폰트 세로 길이가 16px이라는 뜻입니다. 퍼센트 길이는 픽셀 말고 퍼센트(%)로도 설정가능하다. 이미지 가운데 정렬 img { display: block; margin-left: auto; margin-right: auto; }
태그 텍스트를 굵게 쓰고 싶으면 태그를 사용하면 됩니다. 태그 텍스트를 날려 쓰고 싶으면 태그를 사용하면 됩니다. 두 태그는 시각적 효과만 가지고 있는 태그다. HTML에서는 시각적인 특징이나 효과 뿐만 아니라 의미도 담고 있는 phrase tag가 있다. 태그는 텍스트만 굵게 만드는게 전부지만 태그는 감싸고 있는 텍스트를 중요하다고 표시하는게 목적이다 마찬가지로, 태그도 시각적으로 날려쓰는게 목적이라면, 태그는 강조하는 목적이다.
putchar는 하나의 문자를 출력하는 것이고fputc는 인자가 두개인데 첫번째 인자는문자이고 두번째 인자는 출력 대상을 의미한다. 한마디로 문자를 어디에다가 출력할것인지그 대상을 지정할수있다. 두번째 인자에 stdout을 입력하면모니터로 출력하게 된다. getchar는 키보드로 입력된 문자를 반환하고fgetc는 문자를 입력받을 대상을 인자로 전달한다. 한마디로 입력받을곳을 지정할수있다. 인자에 stdin을 입력해주면키보드로 입력을 받는다. 여기서 fgetc는 엔터키까지문자로 받아들이고 fputc로 엔터키를출력하는 결과를 볼수있다.
스트림이란 흐름을 의미한다. 데이터를 컴퓨터내부로 받아들이는것을 입력이라하고외부로 전송하는 것을 출력이라고 한다. 입출력 스트림은 OS가데이터의 입출력을 위해 놓아주는소프트웨어적인 형태의 다리이다.이유는 OS가 소프트웨어이기때문.OS가 자동적으로 스트림을 제공해준다. stdin과 stdout은 표준출력스트림이고stderr는 표준 에러스트림을 의미한다. 여기서 나와있는입출력의 대상들은 바꿀수있다. 스트림은 운영체제에 의해서자동으로 형성되고종료와 동시에 자동으로 소멸된다.
함수의 선언 컴파일이 위에서 아래로 진행이 되기 때문에함수의 배치순서는 중요하다. 컴파일 되지 않은 함수는 호출이 불가능하다. 컴파일러는 위에서 아래로 읽기때문에 메인함수가 필요로 하는 함수보다 위에 있으면컴파일러는 필요로 하는 함수를 인식하지 못해서필요로 하는 함수를 호출할수없게 된다. 그래서 일반적으로 함수의 선언을 해준다. 예시) int add(int n) 이런 함수가 존재한다면 정의는 중요하지않다. 변수선언하듯이함수도 선언해주는것이다. int add(int n); // 선언 예시 1int add(int); // 선언 예시 2 예시 1도 선언하는덴 지장없지만변수 이름이 중요한게 아니라그 함수에 매개변수와 반환값이 중요하지변수이름이 중요한게 아니기때문에 예시 2로 해도 상관없다.
함수이름에도 주소값이 있다. 함수포인터도 포인터과 같이그 함수의 함수반환형과매개변수의 타입도 동일해야한다. 함수포인터에 타입을매개변수로 인자를 전달할때굳이 정해주지않아도 된다. 하지만 그 함수내에서 변수의사용을하려면 변수이름을 정해줘야한다. 그리고 매개변수의 타입형갯수도1개면 1개 2개면 2개이렇게 갯수도 동일하게 넘겨줘야한다. 함수포인터 선언법을 알아보자. int SoSimple(int num1, int num2) { }이런 함수가 있다고 가정해보자. int (*fptr) (int, int);이런식으로 함수를 지정해줄포인터를 선언하고가리킬 함수에 매개변수와동일한 자료형타입과 갯수를괄호안에 적어준다. fptr=SoSimple;그리고 fptr에 함수의 이름을대입시키면 함수의 주소를가리키게 된다. fptr(..
int * parr[20;는 [ ] 역시 가리키는것이기때문에포인터와 같아서 *을 하나 더 붙여서이중포인터가 된다. int arr2d[3][4];2차원 배열은 쉽게 포인터형으로결정짓을수없다. (*ptr)[4]; 이런식으로 선언해야된다.뒤에 [4]는 안써줘도 자동으로 할당된다. ptr=arr2d; 이렇게 해주면arr2d에 주소값을 저장한다. 배열의 1열의 인덱스마다 첫번째 행의 주소값을 가리킨다. 2차원배열에서는 배열이름과배열의 이름[0]의 값은 틀리다. 이유는 ?배열이름은 배열전체의 크기이고배열이름[0]은 1행의 크기이다.그래서 다르다. 배열의이름에 +1 이런식으로 연산을 하게되면1열씩 증가하게 되는 결과를 볼수있다.크기또한 1열의 길이만큼 크기만큼 증가한다. 가로의 길이가 다르기때매증감하는 크기에 차이가..
이중포인터는 ?변수를 가리키고있는 포인터변수를가리키고 있는 포인터이다. 쉽게 생각하면dptr은 ptr을 가리키고 있고ptr은 num을 가리키고 있다. 이중포인터는일중포인터의 주소값 저장하는 용도다. 삼중포인터라고 치면이중포인터의 주소값을 저장하는 용도다. 이렇듯 가리키는덴 제한이없으며*는 메모리공간을 접근하는 것인데 이중포인터가 있는데*를 한개만 사용한다면 그 의미는*dptr접근하면 ptr의 주소값을보게되지만 ptr을 한번 더 접근해야num을 보게되는 것. 그래서 이중포인터라면 **를 써줘야댄다. 삼중포인터라면***를 써주면 된다. 선언은 이런식으로 한다.
흔히 주로 쓰이는것은 1차원 배열이며쓸일이 있어도 2차원 배열까지만 쓴다.3차원 배열부터는 별로 쓰이지않는다. 이유는 사람의 머리로는 상상할수없다. 1차원배열이 아파트로 따지면아파트의 1층이며 2차원 배열은 층층을 표현할수있고 3차원 배열은2차원배열을 3면으로 표현가능하다. 2차원 배열의 선언 방식은 ? 이미지대로 이며 행렬의 개념이다.배열은 0부터 시작이다. 그러면 1층의 1번방은arr[0][0] 인것이다. 2차원배열의 이름역시 주소값을 가리키고2차원배열의 이름과 세로인덱스만 쓰면그 층의 첫번째주소값을 가리킨다. 2차원배열의 가변배열선언은int arr[3][3]={{ } , { } , { }} 이런식으로 괄호한번 열어주고그안에 괄호를 한번 더 열어줘야댄다.괄호마다 한 층을 의미한다. 굳이 인덱스도 다 ..