c언어

· C언어
첫 번째, 데이터를 안정적으로 입력받을 수 있다. 버퍼는 운영체제에 따라 크기가 다를 수 있지만 일정 크기의 연속된 저장 공간이다. 따라서 키보드로 데이터를 입력하면 우선 저수조와 같은 역할을 하는 버퍼에 저장됩니다. 프로그램이 다른 일을 하느라 해당 입력을 즉시 받지 못해도 데이터가 사라지지 않아 안정적입니다. 두 번째, 입력장치와 독립적으로 사용할 수 있습니다. scanf 함수는 키보드와 직접 연결되지 않고 정해진 크기와 형태를 가진 버퍼에서 입력을 받습니다. 따라서 입력장치가 바뀌더라도 함수를 수정하지 않고 사용할 수 있습니다. 버퍼와 입력장치를 연결하는 작업은 운영체제가 담당합니다.
· C언어
이 때에는 배열의 저장 공간이 할당되지 않으며, 매개변수로 선언된 배열의 이름은 자동으로 포인터 변수오 바뀐다. 형식은 유지한 체 포인터 변수로 변경된다는 의미이다. 컴파일러는 배열명을 자동으로 포인터로 바꾸고 타 함수에서 선언된 배열의 모든 배열 요소를 사용할 수 있도록 포인터 연산을 수행한다. 그리고 타 함수에서 선언된 배열의 크기는 알 수 없으므로 알고 싶다면 따로 반드시 요소의 개수를 인수로 받아야 한다. 정리하면 배열로 매개변수에 선언하면 크기를 생략하든 어떤 수로 적었든 컴파일러가 자동으로 포인터로 변경한다.
· C언어
1. 주소와 포인터는 상수와 변수 차이와 같다. 1) 포인터는 변수처럼 공간으로도 사용할 수 있지만, 주소는 상수처럼 정해져 있는 값만 사용할 수 있지 공간으로는 사용할 수 없다. 예를 들면 C언어에서 등호(=) 좌측에 공간이 오고, 등호 우측에는 값이 온다. 이때 주소 값 자체는 좌측(L-value)로 올 수 없다. #include int main(void){ int a = 1; int *pa = &a; // 포인터는 변수와 같아서 L-value로 쓰이는 것이 가능하다. &a = 100; // 주소는 상수 값이라 L-value로 쓰이는 것이 불가능하다. return 0; } (위 예시는 보여주기 위함으로 작성한 것이라 실제 컴파일하면 오류를 가져온다) 2) 둘 다 산술 연산자는 사용 가능하다. 2. 포..
· C언어
1. 프로그램 만들기 1.1 컴파일 과정 3단계 1) 1단계 전처리 사용자가 작성한 소스파일을 처음에 가공하는 과정이다. #include가 전처리 지시자이며 이후에 작성하는 등의 헤더 파일, 즉 라이브러리를 불러올 수 있다. 이로써 외부에 있는 함수를 직접 정의하지 않아도 사용할 수 있다. 전처리 과정은 주로 소스 파일을 컴퓨터에 맞게 편집하는 일이므로 파일의 형태에는 변화가 없습니다. 2) 2단계 컴파일 전처리가 된 소스 파일은 컴파일 과정을 거쳐 기계어로 변환된다. 변환된 것은 개체 파일이라고 하며, CPU가 해석할 수 있는 기계어로 된 명령어들로 이루어져 있지만 바로 실행할 수는 없다. 프로그램은 운영체제에 의해 실행되어서 설치된 운영체제가 인식할 수 있는 형태로 바꿔야 한다. 3) 3단계 링크 이..
· C언어
변수 값을 출력하기 위해선 꼭 변수 선언과 값 초기화를 해줘야 한다. 선언과 동시에 초기화를 해도 되고, 선언 뒤에 초기화를 해도 되지만 꼭 초기화를 해야한다는 이야기이다. 아래는 변수 이름을 정할 때의 규칙을 소개해드려고 한다. 이 규칙들을 지키지 않으면 컴파일 단계에서 에러가 발생하므로 꼭 주의하길 바란다. 1. 변수 이름은 문자나 숫자 또는 _(밑줄)로 구성할 수 있으나 숫자로 시작할 수는 없다. ex) int _3a; (가능), int 3a; (불가능) 2. 변수 이름은 대/소문자를 구분한다. ex) int a;와 int A;는 서로 다르다. 3. C 언어에서 예약어 키워드는 사용할 수 없다. ex) int float;과 double int;는 불가능하다. 4. 특수 문자는 변수 이름에 들어갈 수..
· C언어
1. 변수 선언과 동시에 초기화 int a; // 정수형 변수 a 선언 a = 5; // 변수 a 초기화 변수 선언과 초기화를 동시에 할 수 있는데 그것은 아래와 같다. int a = 5; 2. 응용 예시 1) int a; int b; int c; int d; int e; 5개의 변수를 선언하기 위해 위와 같이 했지만, 컴퓨터 프로그래밍 언어는 보통 같은 단어를 반복해서 사용하는 것을 피하려는 경향이 있다. 그러므로 아래와 같이 정리할 수 있다. int a, b, c, d, e; 2) int a = 3; int b, c; => int a = 3, b, c;
· C언어
1) 변수를 선언할 때 한 가지의 숫자가 아니라 연산을 중간에 포함시킬 수 있다. 2) %d는 1장에서 언급했듯이 서식 지정자이다. 이때 d는 decimal 즉, 10진수의 약자로 %d는 곧 '10진수로 값을 출력하겠다'는 의미입니다. 10진수는 정수이므로 %d에 해당하는 변수는 반드시 정수형 변수여야만 합니다. 3) 서식 지정자 %d가 나오면 꼭 뒤에 콤마가 오고, 변수나 상수가 오게 된다. %d는 정수 자료형 변수이므로 정수 이외에는 올 수 없다. C언어에서 곱셈 연산자는 x가 아니라 *이다.
· C언어
1) 정수형 변수 선언인 int에 앞서 const를 넣어주면 더이상 변하지 않는, 즉 고정적인 값인 상수를 선언할 수 있게된다. 이는 정수형 변수뿐 아니라 모든 변수 선언에도 적용된다. 변수는 값을 계속 바꿀 수는 있지만 상수는 값이 변하지 않는다. 2) 위 사진대로 디버깅을 하게 되면, 아래 사진처럼 printf 함수에서 가장 가까이서 선언된 YEAR라는 변수의 값인 2004를 출력하게 된다. 3) 하지만 처음 선언한 정수형 변수 앞에 const를 붙이면 이 값은 상수가 되고, 더이상 변할 수 없는 값이 되어버린다. 그래서 이후에 이 값에 다른 값을 선언해도 변하지 않는다. 그래서 오류가 나온 것을 아래에 가져왔다. 4) 그래서 만약 같은 변수에 동시에 변수를 선언했다면, 위처럼 상수로 선언되지 않은 ..
jayoon
'c언어' 태그의 글 목록