C/기본 문법 내용 정리

    배열 포인터와 포인터 배열

    배열 포인터와 포인터 배열

    포인터 배열이란? 포인터 변수를 저장할수 있는 배열 1 int *p[3] ={&arr1,&arr2...}; cs 말그대로 포인터 변수들을 저장하고있는 배열이다. 배열 포인터란? 배열을 가리키는 포인터 사용하는 이유: 2차원 이상의 배열에서 인덱싱을 하기위해서! 1 int (*p)[3] =arr1; cs * 일반 포인터 변수를 생성하여 접근 할 때는 * 로 값에 접근 * 위와 같이 배열 포인터로 생성하여 접근 할때는 **로 값에 접근 * 일반 변수를 포인터로 접근 할때도 **로 값에 접근 - 예제 #include #include int main() { int arr1[6] = { 10,20,30,40,50,60 }; int arr2[2][3] = { 10,20,30,40,50,60 }; int *p1 = ..

    메모리 영역

    메모리 구조 영역 예시 코드 영역 실행할 프로그램의 코드 데이터 영역 상수, 리터널, 전역 변수 힙 영역 동적 할당 (런 타임에 크기 결정) 스택 영역 지역 변수, 매개변수 (컴파일 타임에 크기 결정) 데이터 영역 전역 변수와 static 변수가 할당되는 영역 프로그램 시작 동시에 할당된다. main 함수가 호출되기 전 할당 프로그램 종료될 때까지 존재, 종료 시 메모리에서 소멸 변수 선언 int main(){ ...... return 0; } 스택 영역 함수 호출 시 생성되는 변수가 저장되는 영역 함수 종료 시 메모리에서 소멸된다. 컴파일 타임에 크기가 결정된다 = 미리 크기를 정해야한다 = 유연성이 없다. 컴파일 타임 : 컴파일이 진행되는 시간 int number(int a){ int a=999; }..

    파일 입출력

    파일 입출력 기본 구조 선언 : FILE * 파일변수; 파일 열기 : 파일변수= fopen("파일이름","모드"); 파일 닫기 : fclose(파일변수); - 바로 닫아주는 습관을 들이기 if(파일변수==NULL) { .. } - 에러가 났을 때를 방지하는 습관 들이기 feof(파일변수); - 파일의 끝이 아니라면 0을, 끝이라면 0이 아닌 수를 리턴 while(!feof(fp)) { ... } - 파일의 끝까지 반복한다. 파일 열기 FILE *fopen("파일이름", "모드") 에러가 발생하면 NULL 리턴 파일 이름 : 액세스할 대상 파일 입력 (큰 따옴표로 묶어줘야 함) 모드 : 끈 따옴표로 묶어줘야 함 r: 읽기 전용, 파일이 없으면 에러 리턴 w: 쓰기 전용, 기존의 파일을 지우고 새로 생성 a..

    10장. 구조체

    구조체는 왜 사용할까 ? 자료를 체계적으로 관리하기 위해서 ! Person 이라는 구조체를 만들었을 때 -> A, B, C라는 사람을 쉽게 생성하고 관리할 수 있다. 구조체는 struct 으로 정의한다. (data stucture의 약어) 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다. 선언 : struct 구조체 이름 변수이름; 구조체 변수를 선언하면서 초기화 : struct 구조체 이름 변수이름={ .변수=값, ..}; 정의 : struct 구조체이름 { ..... }; 구조체를 정의하면서 변수 선언 : struct 구조체이름 (...) 변수; 접근 : 구조체 변수.구조체 멤버 구조체 멤버에 접근할 때는 . 을 사용한다. ex) person1.age=19; 문자열 멤버는 할당 연산자로 저장할 ..

    9장. 문자열

    문자열을 대입하는 함수 strcpy #include 문자열을 모두 바꿈 strcpy(복사 받을 곳, 복사할 내용) 첫 번째 인수는 char 배열이나 배열명을 저장한 포인터만 사용 가능 두 번째 인수는 문자열의 시작위치를 알수 있다면 모두 가능 원하는 개수의 문자만을 복사하는 strncpy #include 원하는 문자열만 대입 strncpy(복사 받을 곳, 복사할 내용,복사할 문자 수) 문자열을 붙이는 strcat, strncat 문자열의 길이를 반환하는 strlen