컴퓨터 프로그래밍 51

C언어 1차원 배열 / 문자열 배열 / 배열(포인터 연산)

배열 선언 int array[5] = {0}; array[0] = 1; array[1] = 2; array[2] = 3; array[3] = 4; array[4] = 5; 배열은 같은 형태의 데이터를 말합니다. 하나의 변수명으로 여러 개의 변수를 표현할 수 있습니다. 배열 선언 시 주의사항 배열 선언 시 배열의 크기는 상수만 입력 가능하며 변수는 불가능합니다. int index=10; int array[index]; 위처럼 쓸 수 없습니다. 단 선언 이후에는 배열 크기에 변수를 사용할 수 있습니다. 선언 시 배열 크기는 5이지만 실제 배열에게 접근하려면 0부터 4까지 접근이 가능합니다. 배열 이름의 특징 1. 배열 이름은 저장공간이 아니다. 2. 배열 이름은 배열의 시작 주소이다.(array[0]) 문자..

C언어 포인터(Ponter) / 다중 포인터

포인터란 메모리 공간을 가리키는 주솟값을 뜻합니다. 포인터 변수란 메모리 공간을 가리키는 주솟값을 저장하는 공간입니다. /*별표의 위치는 상관없다 */ int* p1; char * p2; void *p3; 포인터 변수의 저장공간은 자료형에 상관없이 컴퓨터 os 주소체계를 따르는데요 32bit 운영체제 이면 포인터 변수의 공간이 4바이트고 64bit 운영체제 면 8바이트입니다. 포인터 변수를 선언할 때 자료형이 각각 정해져 있는 이유는 자료형 저장 크기만큼 읽어오기 위해서이며 자료형마다 저장되는 자료가 쓰이는 형식이 틀린 이유이기도 합니다. 자료형의 크기만 고려했다면 가장 큰 자료형 포인터 변수로 만들면 되는데 자료형마다 저장되는 자료가 메모리에 쓰이는 형식이 다르기 때문에 그렇습니다. void형은 형태가..

C언어 Call by Value / Call by Address

Call by Value (값에 의한 전달) #include void Swap(int a, int b) { int tmp; printf("2. x = %d y = %d\n", a, b); tmp = a; a = b; b = tmp; printf("3. x = %d y = %d\n", a, b); } int main(int argc, char const *argv[]) { int x = 10, y = 20; printf("1. x = %d y = %d\n", x, y); Swap(x, y); printf("4. x = %d y = %d\n", x, y); return 0; } x y의 값을 바꾸는 Swap() 함수를 정의했습니다. 결과는 함수 내부에서만 결과가 바뀌었고 결론적으로 x y는 바뀌지 않았습니다..

C언어 함수

함수의 기본 구조 반환형 함수명 인자 int Fuc(int a) { 함수 내용(기능) } 반환형은 함수가 리턴을 만나면서(종료) 반환할 자료 형태를 결정짓습니다. 함수명은 기능 구현에 대한 의미를 부여 한 단어로 표현하는 것이 좋습니다. 인자는 함수 내부에서 사용될 인자를 받아오는 변수의 선언입니다. /* 함수 선언의 종류 */ 1. int F1(); //반환형이 정수형인 함수 인자는 없다. 2. int F2(int num); //반환형이 정수형이고 인자는 정수형인자 1개를 필요로한다. 3. void F3(); //반환형이 void 즉 반환을 하지 않는다. 4. void F4(int num, char ch); //반환을 하지않고 정수형1개,문자형1개 인자를 필요로한다. 위의 내용은 단지 함수의 선언입니다..

C언어 파일 입출력

파일 입출력의 기본 구조는 1. 파일 오픈 2. 파일 읽기/쓰기 3. 파일 닫기 이렇게 되어 있습니다. #include int main(int argc, char const *argv[]) { FILE* fStream; //FILE 구조체 포인터 변수 선언 // 오픈한 파일의 주소를 담기 위해서 fStream = fopen("c:\\a.txt","w"); //파일이름(경로), 모드(w,r,a)읽고쓰고추가 /*파일오픈이 성공하면 해당 내용의 정보를 실패하면 NULL값이 반환된다.*/ if(fStream) //NULL이면 거짓이 된다. { printf("파일생성 성공\n"); } fclose(fStream); //파일 닫기 return 0; } fopen() 함수의 인자 값에 대해서 처음으로 들어가는 것은 ..

C언어 구조체 (구조체 포인터 / typedef)

구조체는 비슷하게 정리할 수 있는 변수들을 묶어서 새로운 자료형으로 만드는 것을 말합니다. 예를 들어 학생의 정보중 학번 나이 이름을 저장한다고 했을 때 한 사람이 3개의 변수를 사용하게 됩니다. 그러면 200명은 600개의 변수가 있어야겠죠 이런 불편한 점을 해결할 수 있는 게 구조체입니다. #include //구조체 정의 struct Student { int id; int age; char * name; }; // 세미콜론 확인 int main() { //구조체 변수 선언 struct Student stu; //자료형 Student 의 변수 stu 선언 stu.id = 1001; //구조체 안 멤버에 접근하려면 . 연산자(직접접근) stu.age = 20; stu.name = "nano"; print..

C언어 변수 (지역/전역변수)

변수 - 저장공간 [지역 변수] 함수 내부에서 생성 생성한 함수 내부에서만 사용 가능 사용될 때 stack에 변수 공간 할당 함수 종료 혹은 리턴하면 할당된 지역변수 메모리 소멸 생성만 했을 때 쓰레기 값으로 초기화 [전역 변수] 함수 외부에서 선언 같은 소스 코드 내 모든 곳에서 사용 가능 컴파일 시 메모리 할당 프로그램 종료하면 메모리 소멸 생성만 했을 때 0으로 초기화 변수의 적용 범위 #include int global = 10; //전역 변수 생성 초기화 int func() //사용자 함수 { int x = 0; int y = 1; return x + y + global; } int main() // 프로그램 시작점 { int a = 0; a = func(); global += a; printf..

C언어 rand() srand() time() 함수 (난수 생성)

#include #include #include int main() { srand(time(NULL)); printf("%d\n",rand()); printf("%d\n",rand()); printf("%d\n",rand()); return 0; } rand() 함수는 stdlib.h에 선언되어 있습니다. 함수의 인자는 비워도 상관없습니다. 0~32767의 범위 중 무작위 수를 뽑아주는 함수입니다. #include #include int main() { printf("%d\n",rand()); printf("%d\n",rand()); printf("%d\n",rand()); return 0; } 그러나 위의 소스를 다시 실행하면 결과가 똑같이 나옵니다. 그 이유는 seed 값이 똑같기 때문입니다. sra..

C언어 제어문 (switch~case / break / continue)

지난 편 문제 while을 써서 1에서 100까지 출력 #include int main() { int a = 1; while (a= 20; a--) { printf("%d\n", a); } return 0; } switch case #include int main() { int a = 10; switch (a) { case 1: { printf("a==1\n"); break; } case 5: { printf("a==5\n"); break; } case 10: { printf("a==1\n"); break; } default: { printf("default\n"); break; } } return 0; } 조건에 맞는 경우에 찾아가는 형태입니다. switch() 안에는 식이나 값이 올 수 있습니다. 그..