C언어(14)
-
[C] scanf 함수 1
형식 scanf("%d", &var); 형식으로 사용된다. %d에 값을 입력하면 var변수에 저장되는 형식, &var로 변수의 주소를 참조하기 때문에 포인터가 사용된 함수임을 짐작할 수 있다. 왜 포인터를 사용할까? getchar는 한번에 하나의 값을 입력받는데 반해 scanf는 한번에 여러개의 값을 입력받기 때문에 한번에 하나의 값을 반환하는 return문을 활용할 수 없다. 이에 포인터를 사용하게 된 것이다. 주의사항 (1) scanf는 Enter와 '공백'을 통해 입력값을 구분한다. scanf("%s %s" , &var1, &var2); 에 대해서 [ Gwangjin, Seoul Guro, Seoul ] 을 입력할경우 var1은 Gwangjin,을 var2는 Seoul을 입력받게 된다. 나머지 Gu..
2021.01.07 -
[C] 문자, 문자열
[표준입력장치 동작원리] (1) 입력장치에서 입력값 발생 (2) 버퍼에서 임시 저장 (3) 엔터등과 같은 입력 완료 신호 발송 (4) 출력 -버퍼 초기화 만약 입력을 3가지해서 버퍼에 3가지의 값이 있는데 출력을 하나만 했다면 버퍼에는 2개가 남아있는 상황이 된다. 따라서 다음 입력때는 기존에 입력되어있던 값들이 먼저 나온다. 때문에 버퍼를 초기화 해줘야하는데 이는 rewind키워드와 stdin 포인터를 이용한다. rewind(stdin); [문자와 문자열 입력함수] getchar() :문자 1개 입력 int input_data = getchar(); getchar() 주의사항 1. 기본적으로 getchar()데이터는 int형에 부여되도록 되어있으나, char로 설정해도 문제없다. 2. Enter값 역시..
2021.01.06 -
[C] void 포인터
포인터가 전달한 데이터의 자료형을 void로 설정할 수 있다. 이것이 의미하는 것은 어떤 자료형을 받을지 모른다는 것인데, 이때 형변환을 하지 않으면 포인터가 데이터를 받지 못하는 오류가 발생한다. void *p ; *p = 5 ; // 오류 출력 :대상 메모리의 크기가 지정되지 않음. 따라서 형변환 (int *) 등을 적용해줘야하는데 다음과 같은 형태이다. void *p ; *(char *)p = 5; 그렇다면 포인터가 전달할 데이터의 자료형을 void로 두는게 어떤 이득이 있을까? 어떤 자료를 받을지 모를때 유용하게 사용될 것이다. 아래 AssignType 함수는 switch문과 if ~ else if 문을 활용하여 포인터에 자료형을 부여하고 있다. #include int AssignType(void..
2021.01.06 -
[C] 포인터 활용
포인터 활용 예시 (1) 함수내의 지역변수 변경 아래의 경우 main에서 func를 호출하고 매개변수 data에 corn을 대입하였을 경우 cream은 10으로 되겠지만, 그 아래행 corn = 4에서 오류가 발생한다. #include void func(short data) ; void main() { short corn = 10; func(corn); } void func(short data) { short cream = 0 ; cream = data ; corn = 4 ; } 하지만 포인터를 활용한다면 func는 ptr이라는 포인터를 매개변수고 갖고, 이 포인터에는 corn의 메모리 주소가 할당된다. cream = *ptr은 cream에 포인터가 가리키는 데이터를 할당하므로 cream = 10을 의미..
2021.01.06 -
[C] 포인터 개념
포인터? 간접 주소 지정방식을 구현하기 위해 C에는 포인터라는 개념이 있음 포인터는 중간에서 메모리 주소를 할당해주는 기능을함 왜 포인터를 사용해야하나? 포인터는 다른 함수에 선언된 변수라도 메모리 주소를 읽거나 쓰면서 변경할 수 있어지므로 다양한 프로그래밍이 가능해진다. 포인터 사용법 #include int main() { short result; // result 이라는 임의의 변수 선언. short* ptr; // *ptr 로 포인터 변수 생성, 포인터는 무조건 4바이트의 공간을 갖음. //short은 포인터가 받은 데이터의 자료형을 결정함. printf("포인터의 주소는 %p 입니다.\n", &ptr); // 생성된 포인터의 위치를 파악함. ptr변수 앞에 &를 붙여서 자체 위치를 출력. ptr ..
2021.01.06 -
[C] if 조건문
if조건문은 피해라! 컴퓨터는 명령을 순차적으로 수행하는데 if조건문은 실행흐름을 변경하기 때문에 if 조건문 사용을 줄이는게 효율적이다. if조건문을 대신할 수 있는것에는 어떤것들이 있을까? [조건 수식] "변수 var값이 5이면 2를 더한다." 라는 조건 실행을 아래의 두가지 경우로 나눠서 실행할 수 있다. 처리할 데이터양이 더 많아진다면 조건 수식을 활용한 경우의 효율성이 더욱 증가한다. /* if 조건문 활용 */ void main() { shrot var ; if(var ==5){var += 2}; } /*조건 수식 활용*/ void main() { shrot var ; var += 2 * (5 == var); } boolean 을 활용한 조건수식도 있다. && 연산과 || 연산을 활용하여 조건..
2021.01.05