= 4회차 과제 업로드 = * 코드는 {{{ {{{ }}} }}} 안에 넣으면 됩니다. == 곽길문 == 11.이번시간에 배웠던 내용을 바탕으로, int* a; int b; int **c;로 선언했을때 &c,c,*c,&a,a에 관해서 각각 설명하고, 어떤 것이 어떤 것과 일치하는 것인지를 이해할 수 있도록 쉬운말로 정리해보세요. -이중포인터는 포인터의 주소값을 갖는 것입니다. 그거에 따라서 &c는 자기 자신 주소를 의미하는 것이고 c는 포인터 a의 주소값을 말합니다. *c또한 a의 주소값입니다 . &a는 a의 주소값, a는 a가 b를 가리키는 것이라면 b의 주소값을 말합니다. 12.예제 코드가 어떤 행동을 수행하고, 왜 그런 값이 나오는지 설명해 봅시다. int* a; int b=5; int** c; c=&a; a=&b; **c=9; printf("%d %d",*c,**c); -결과 : 3210468 9 -해설 : 우선 int형 자료형을 가진 데이터의 주소를 가리키는 포인터로 a지정, b의 값에 5를 지정, 포인터의 주소를 가리키는 c를 지정하였다. a의 주소를 이중 포인터 c에 주었다. b의 주소는 포인터 a에 할당하였다. 그리고 이중포인터c에 값을 9로 주었다. 이것은 원래의 a의 주소값을 갖고 있던 c에 9를 대체해준 것이다. 따라서 프린트 *c,**c를 하면 a의 주소와 9가 출력이 된다. 1.5.1.2 예습 2.Circular Queue가 무엇인지 찾아보자. -원형 큐로 기본 큐와 마찬가지로 첫 번째 데이터가 추가되는 순간 큐의 처음과 끝부분이 그 데이터를 가리키게 된다. 처음을 F 끝부분을 가리키는 것을 R이라하면 꽉찬 경우나 텅빈경우에 F가 R의 한칸 앞을 가리키는 것은 같기 때문에 F,R의 위치만을 가지고 꽉 찬경우와 텅 빈 경우를 구분할 수 가 없다. 따라서 이와 같은 문제를 해결하는 방법은 많겠지만 그 중 하나는 배열을 꽉 채우지 않고 배열의 길이가 N이라면 N-1만큼만 채워 졌을 때 꽉 찬 것으로 간주하는 방법이다. 이렇게 하면 저장 공간 하나를 낭비하게 된다. 하지만 이로 인해서 문제 하나가 해결이 되는 셈이다. 3.typedef가 무엇인지 알아보고, 간단한 예제를 써보자. - c언어에서는 char,int,float 와 같은 많은 수의 기본 데이터 형과 배열, 포인터, 구조체 등의 유도된 데이터형으로부터 새로운 데이터형을 만들 수 있는데, 사용자 측면에서 새로운 데이터 형을 정의 할 수 있도록 typedef선언을 제공한다. typedef은 #define과 달리 이미 존재하는 c언어의 데이터 형만을 취하여 정의하고 typedef은 프리프로세서에 의해 처리되는 것이 아니라 c컴파일러에 의해 처리된다. 또한 #define보다 다양한 형태의 치환이 가능하다. < 일반 형식 : typedef 기존 데이터형 새로운 데이터형; > 예제 : #include void main() { typedef char *YOU; YOU name ="color"; YOU color = "red, blue, yellow, black"; printf("name=%s \n",name); printf("color=%s \n",color); } 결과 : name =color color =red, blue, yellow, black 해설 : typedef문에서 기존 데이터형 char를 새로운 데이터형 이름으로 *YOU를 정의했고 YOU name이라 정의하면 이는 char *name로 나타낸것과 같다. 4.구조체를 사용하여 student 구조체를 하나 만들고, student 구조체 배열을 만들어 0~3번째 배열에 AClass반 학생들의 정보를 적당히 넣고, 그것을 출력해보자. 구조체 내부에 char 배열을 사용해서 이름을 넣어도 좋고, 학번을 int형으로 넣어도 좋다. -.. 왜 에러가 뜰까.. #include struct Student { int age; char name[]; }; int main() { int i; struct Student stu[4]={24,"길±æ문¹�"},{24,"상≫o희En"},{23,"송¼U이AI"},{22,"혜Cy림¸²"}; for(i=0;i<4;i++){ printf("age : %d\n name : %s \n",stu[i].age,stu[i].name); } return 0; } -나머지는 월요일 저녁까지 올리겠습니다 == 황혜림 == == 도상희 == == 한송이 == ---- [새싹교실/2012], [새싹교실/2012/AClass]