반응형

전체 647

배열의 특징 C언어

배열의 특징 C언어 배열명은 포인터 상수이다. 포인터 상수는 주소값이 고정이라는 뜻이다. 예외)sizeof 연산자의 피연산자로 사용될 때만은 포인터상수로 취급되지 않고 배열 그자체로 취급된다 배열을 한번에 초기화하고싶다면 선언과 동시에 해야한다. 선언과 동시에 초기화를 할 때, = 는 대입(Operator)가아닌, = 초기화 구두점이다(Punctual) 때문에 선언후에는 한번에 초기화 할 수가 없다. 선언과 동시에 초기화를 안한다면, 배열 요소 하나하나를 직접 입력 해야한다. 상수는 좌변값이 될 수 없기때문에 배열명은 좌변값이 될 수가 없다. 배열 선언시 배열의 크기는 상수로 해야 한다. 배열 선언시 첨자를 변수로 지정한 경우에 값을 집어 넣는 시점에서 문제가 생긴다. 꼭 상수로 해야하지만 C++에선 선..

포인터사용시 주의점(C언어)

포인터는 변수를 가르키는 변수다. int*a; ---------- *a=3; printf("%d", *a); 이런식으로 사용하게되면 3을 담는 변수가 없기때문에 에러가난다. 참고 : 컴파일러에따라선 위 코드가 에러가 안날 수 있다. 그럼 같은식으로 int *b; int *c;를 선언하여 코드를 추가해보면 에러가 날 것이다. 사용법은 존재하는 변수의 주소값을 입력하는 형태로 사용한다. int b; a=&b; ------------ 위에 추가해준다. char* src = "abcde"; // 이것은 src[6] 의 배열이 만들어진것과 같다. char* a; 이경우는 불완전한 선언이다. 포인터 a 가 가르키는 변수가없기때문에 값만 입력한다면 에러를 발생시킬것이다. 그래서 위와같이 "abcde" 로 값을 대입하..

C언어 getch

사용자가 입력시까지 대==기한다. 입력문자를 받아 입력문자를 리턴한다. 입력문자를 화면에 출력하지는 않는다. 입력문자가 확장키일경우 0을 리턴한다. 사용예 int ch; // 이경우 int 값으로 해야한다. ch=getch(); // 문자를 getch()로 받아서 ch에 담을때 int자동캐스팅되어 아스키코드값으로 담긴다. if (ch==0xE0||ch==0) { ch = getch(); printf("%d", ch); } 다음은 입력한 문자와 아스키코드값으 리턴해준다. for (i=0;i

const 키워드

const키워드의 기본적인 기능은 상수의 정의이다. 사용법 const int i = 7; // 변수 i가 정수 7로 상수가되었다. int arr[i]; // 배열의 인수로 상수만 와야한다. i에 const 선언을 하지않을경우 error 발생 const는 선언과 동시에 초기화 해준다. 선언만 하는 경우는 참조상수화를 하는경우이다. 예를들어 함수내에서 외부변수를 인수로 갖을때 const를 사용하면 외부변수를 참조하되 변경을 하지않도록하는 안전장치로 const 키워드를 사용한다. **법칙1 const 상수의 주소값을 읽는것은 에러 const값을 읽는다는것은 그 참조대상을 변경할수있는 가능성을 주는 행위이다. 그러므로 봉쇄된다. 다음예를보자 const int i = 7; int *pi; pi=&i; //에러가남..

난수생성 C언어

//설명 : rand() 함수는 난수를 발생시킨다. 보통 random() 이나 randomize()로 사용한다. 다른 방법을 소개하겠다. 위 코드는rand 함수로 0~99까지의 난수를 발생시킨다. srand는 난수를 시드를 받아서 그수에 매핑해서 난수를 발생시킨다. 범위가 일정한 난수를 그때 그때 다르게 발생하려면 시드를 계속 바꾸면서 난수를 생성하면 된다. time은 1970년 1월1일 00시00분00초 를 기준으로 주어진 시간값까지 지난 시간을 리턴해준다. NULL인경우 현재를 나타낸다. 기발하다. **참고 random 함수는 기본라이브러리에 포함되지 않은듯 하다. rand 함수 - #define Rand_MAX 0x7fff 단점 : 실행시킬때마다 난수의 발생 순서가 동일하다. (컴퓨터마다 다른지 어..

C언어 소수 정수의 반올림

C언어의 예를들자 C언어의 자리수관련 알고리즘이 몇가지있다. floor(double a) 함수는 소수자리수를 잘라버린다. 수학의 가우스함수도 소수자리를 자른다. ceil(double a) 함수는 소수자리수를 무조건 올려버린다. 그럼 반올림은 어떻게 계산할까.. 생각해보자. 소수1자리 에서 반올림하려면 어떻게할까. 0.5를 원래의 수에 더한다음 floor 함수를 쓰면 어떻겠는가? 괜찮을 듯 싶다. 그럼 소수 두째짜리에서 반올림 해보자. 기본적으로 서식지정자는 반올림을 해준다. 괜히 머리아프게 하지말자... 그럼 수를 버리고싶다면 어떻게할까... 3.35인데 소수 둘째짜리를버리고 싶다.. 어떻게할까. 10을 곱하고 floor() 함수를 쓴수 다시 10으로 나눈다. 괜찮을듯 싶다. math 함수를 쓴다는게 좀..

반응형