C언어
Scanf
입력받은 값을 특정 변수의 주소에 해당하는 값에 전달
포인터 대상 const
포인터의 경우 const 는 *앞에 있으면 성립
변수앞의 const는 해당변수만을 상수로 취급
Const 각각 표기에 따른 결과
코드
처음 출력시
리눅스는 효율적으로 쓰기 때문에 메모리 주소가 같음
도스의 cl은 비효율적이므로 메모리 주소가 각기 다름
상수변경 코드추가시
출력
에러 뜸 상수이므로 변경 불가능
배열
오름차순 정렬
작은 숫자부터 차레대로 정렬
출력
오름차순 정렬 하는 함수 BubbleSort에 넣어서 값을 정렬 시킨뒤
하나 씩 출력
다차원 배열
출력
배열 주소에 넣었기에 main내부에서 값 변경이 적용됨
2차원 배열 포인터
출력
whoA에 각각 들어간 num1~4까지 출력
whoB에 들어간 arr2d의 값을 배열에 맞춰서 2행 4열로 출력
함수포인터
특정 함수에 대한 메모리 주소를 담을 수 있는 것
1. 프로그램 코드가 간결해짐
2. 함수포인터를 배열에 담아서도 사용할 수 있으므로 중복되는 코드를 줄일 수 있음
3. 상황에 따라 해당되는 함수를 호출 가능
예제
포인터변수 p가 printf를 가르키므로 p는 printf함수처럼 출력가능
FunctionPointer.c
출력
함수포인터에 각각 SimpleAdder과 ShowString 넣어서 출력
UsefulFunctionPointer.c
출력
olderFirst함수를 실행해서 높은값을 first에 넣고 출력
youngerFirst 함수를 실행해서 낮은값을 first에 넣은뒤 출력
Void 포인터
Type이 존재하지 않는 포인터 변수
순수한 존재로써 모든것을 담을수 있음
주소의 값에만 의미를 두고 type은 나중에 지정할때 유용함
코드
출력
위와같이 나중에 type을 각각 선언 가능
VoidTypePointer.c
출력
각각의 주소값 저장됨
main 함수를 통한 인자 전달
코드
출력:
argc : 프로그램 실행시 명령행 옵션의 개수
argv : 프로그램 실행시 실제 저장되는 문자열들의 배열
응용 GCC흉내내기
코드
출력
gcc 입력시 전달된 문자열은 하나이므로 printf로 gcc: fatal error를 출력함
응용 CL.exe 흉내 내기
코드
출력
문자단위 입출력 함수
getchar :
stdin 에서 한 문자를 가져온다.
표준 입력에서 다음 문자를 리턴한다.
읽어들인 문자를 int로 리턴함
ReadWriteChar.c
출력
문자 입출력 EOF
EOF (End Of File)
파일의 끝을 나타내는 기호
ConsoleEOF.c
출력
파일의 끝 즉, 엔터를 입력하면 중지되고 출력하게됨
문자열 단위 입출력 함수
puts
스트림에 문자열 씀
str 이 가리키는 문자열을 NULL 문자 ('\0') 에 도달할 때 까지 스트림에 복사
fputs
스트림에 문자열 씀
스트림(stream) 에 한 문자를 쓰고 위치 표시자를 증가
WriteString.c
출력
1. puts 함수로 Simple String과 So Simple String을 출력
2. stdout은 현재 모니터에 출력하므로 화면에 Simple String과 So Simple String을 출력
fgets
스트림(stream)에서 문자열 받음
fgets 함수는 scanf 함수와는 달리 오직 개행 문자에 의해서만 입력이 끝나기 때문에 띄어쓰기가 있는 문자열도 입력 가능
반면에 scanf 함수의 경우 개행 문자 뿐만이 아니라 ' ' 와 '\t' 에 의해서도 입력이 끝나기 때문에 띄어쓰기가 있는 문자열은 입력 받을 수 없음
ReadString.c
출력
입력스트림을 읽어들여서 str의 크기만큼 str에 넣는다
fprintf
데이터를 형식에 맞추어 스트림에 씀
printf는 실제 하는것은 없고 fprintf가 실제 작업을 수행함
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160405_조재찬_업무일지_포인터와 배열 (0) | 2016.04.12 |
---|---|
20160411_장진웅_업무일지_구조체로 도서관 프로그래밍 (1) | 2016.04.11 |
20160408_장진웅_업무일지_공장내 Network_네트워크 기초 (0) | 2016.04.11 |
20160407_장진웅_업무일지_로봇제어_시리얼제어4 (0) | 2016.04.11 |
20160410_김가연_스터디일지_구조체 변수의 연산+gets puts 함수 정리 (1) | 2016.04.10 |
비주얼 스튜디오 삭제방법 (2) | 2016.04.10 |
20160409_김가연_스터디일지_구조체의 정의 (2) | 2016.04.09 |
20160404-업무일지-허도경-로봇제어-시리얼제어-터미널 (0) | 2016.04.08 |