본문 바로가기

c9

9. 메모리 동적 할당 1. 메모리 1) 스택: 함수가 사용하는 메모리. 함수의 지역변수, 파라메터 할당. 정적메모리: static 변수나 전역변수 저장 스택/정적메모리: 변수를 선언해서 메모리를 할당받음. 2) 힙 : 메모리 동적할당(런타임시에 할당받음). 변수선언으로는 할당받지 못함. malloc() 함수로 할당 받는다 malloc(할당받을 메모리 크기): 할당받은 메모리 주소 반환 void *p = malloc(4); 3) void 포인터 void 포인터는 타입이 지정되지 않은 포인터로 어느 주소나 저장가능. 연산하기 전 캐스팅 필수 #include void main(){ char a='x', *p1=&a; int b=10, *p2 = &b; float c = 3.45f, *p3=&c; void *vp; printf("a.. 2020. 3. 19.
8. 구조체 배열 장점:집합데이터를 처리. 메모리인접. 포인터에 비해 접근속도 빠르다 배열 단점: 한 타입저장. 크기가 정해있다. 배열로 객체 표현 힘듦=>보완=>구조체 구조체: 타입 정의 1)타입정의 struct 타입명{ 변수들... }; struct Student{ int num; //멤버변수 char name[10]; //멤버변수 }; 2)변수선언 struct 타입명 변수명; struct Student s1, s2; s1.num=10; strcpy(s1.name, "aaa"); #include //타입 정의. 타입 이름:Test //구조체 안에 선언한 변수 : 멤버변수 struct Test{ char a; int b; float c; }; void main(){ struct Test t1, t2; t1.a = .. 2020. 2. 24.
7. 입출력 1. 스트림 - 입출력을 소프트웨어로 구현 2. 표준 입출력 스트림 stdin - 표준입력 stdout - 표준출력 stderr - 표준에러 3. 파일 오픈/읽기/쓰기 1)파일 오픈 FILE *fp = fopen("파일경로", "오픈모드"); 오픈모드: r(읽기), w(쓰기), a(이어쓰기) fopen()은 오픈한 파일의 정보를 담은 FILE 구조체의 주소를 반환. NULL을 반환하면 오픈에러. FILE *fp = fopen("a.txt", "r"); fclose(fp)=> 오픈한 파일을 닫음 #include void main(){ FILE *fp = fopen("a.txt", "r"); if(fp==NULL){ printf("file open error\n"); return; }else{ printf(.. 2020. 2. 19.
6. 포인터 1. 포인터: 주소값을 갖는 변수 1)선언 타입 *변수명; int *p; //p는 int값의 주소를 갖는 변수 int a = 10; p = &a; 2) 실행 실행문에서 *는 포인터가 갖고있는 주소에 저장된 값 printf("p=%x, *p=%d\n", p, *p); *는 값을 읽기 만 가능한 것이라 쓰기도 가능 *p=20; //a도 20이 됨 #include void main(){ int *p, a=10; p = &a; printf("p=%x, &a=%x\n", p, &a); printf("*p=%d, a=%d\n", *p, a); *p = 20; printf("*p=%d, a=%d\n", *p, a); } #include void main(){ char a='a', *p_a;//p_a는 char 주소를.. 2020. 2. 17.