2. 2
Declaring Structures
§ Array와 structure의 차이점
– array
• Array의 모든 element는 같은 type이여야 한다.
• Index를 사용하여 각 element를 access한다.
– structure
• 다른 type의 element로 구성 될 수 있다.
• 각 element는 name을 갖는다.
• Name에 의해 각 element를 access한다.
3. 3
Declaring Structures
§ struct declaration
– Collection of members(/elements)
[Ex] struct student { /* 2 elements로 구성된 structure */
int std_id;
char name [20] ;
} ;
int std_id, char name[20]
2 member를 포함하는 student라 불리우는 struct type을 정의
4. 4
Declaring Structures
§ struct declaration
- struct tag: 정의 되는 structure를 지정하기 위한 name.
- 한 번 structure tag인 student가 정의되면, 이제 tag를 사용하
여 같은 structure type의 변수를 선언할 수 있다.
[Ex] struct student {
int std_id;
char name [20] ;
};
[Ex] struct student p1, p2 ; /* correct declaration */
student p1, p2; /* wrong declaration */
struct tag:
생략 가능하지만..
5. 5
Accessing a Member
§ struct member operator ‘.’
– Structure의 각 member를 access하기 위해 ‘.’를 사용한다.
[Ex] struct student {
int std_id;
char name[20];
} ;
struct student p ;
p.std_id = 1 ;
strcpy( p.name, “Monica” ) ;
1
Monica
p
std_id
name
6. 6
Accessing a Member
§ member operation
[Ex] struct student {
int std_id;
char name[20];
}
struct student p ;
scanf(“%s”, p.name);
p.std_id = 258; /* assignment */
p.std_id++; /* increment */
7. 7
Declaring Structures
§ Example
int main()
{
int std_id ;
char name[20] ;
scanf( “%d”, &std_id ) ;
scanf( “%s”, name ) ;
printf( “%d ”, std_id ) ;
scanf( “%sn”, name ) ;
return 0;
}
struct student {
int std_id;
char name [20] ;
} ;
int main()
{
struct student p ;
scanf( “%d”, &p.std_id ) ;
scanf( “%s”, p.name ) ;
printf( “%d ”, p.std_id ) ;
printf( “%sn”, p.name ) ;
return 0;
}
13. 13
Precedence and Associativity of Operators
( ) [ ] . -> ++(postfix) --(postfix) left to right
++(prefix) --(prefix) ! ~ sizeof(type)
+(unary) -(unary) &(address) *(dereference)
right to left
* / % left to right
+ - left to right
<< >> left to right
< <= > >= left to right
== != left to right
& left to right
^ left to right
| left to right
&& left to right
|| left to right
? : right to left
= += -= *= /= %= >>= <<= &= ^= |= right to left
14. 14
Functions and Assignment
§ struct 변수에 값 넣기
struct student {
int std_id;
char name[20];
} p1, p2;
struct student p1 = { 1, “Gil Dong”}, p2 ;
p2 = p1 ; // OK???
1
Gil Dong
p1
?
?
p2
OK. 원하는 대로 잘 됨