하나의 식을 넣을 공간에 2개 이상의 식을 넣을 때 사용 콤마 연산식의 결과값은 마지막 식의 값이다.
&
주소 연산
피연산자의 주소를 구한다. (추후에 포인터 단원에서 자세하게 설명한다.)
*
포인터 연산
포인터가 가리키는 곳 또는 그 곳의 내용 (추후에 포인터 단원에서 자세하게 설명한다.)
예시
sizeof 크기 연산자
1
2
3
4
5
6
7
8
voidsize_of_operator(){// 자료형이나 특정 값을 담은 식의 메모리상 크기(바이트)를 반환inta=4;doubleb=123.42;printf("sizeof(a) : %d\n",sizeof(a));printf("sizeof(b) : %d\n",sizeof(b));printf("sizeof(10/3) : %d\n\n",sizeof(10/3));}
1
2
3
sizeof(a) : 4
sizeof(b) : 8
sizeof(10/3) : 4
, 콤마 연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
voidcomma_operator(){// 2개 이상의 식을 하나의 식으로 묶는 연산자// expr1, expr2inta=0,b=4;printf("a + b = %d\n\n",a+b);// 동일한 자료형 변수를 동시에 여러 개 선언할 때나// for 문과 같이 한 줄에 2개 이상의 식을 표현할 필요가 있을 때 주로 사용한다.for(inti=0,j=4;i<5;i++,j--){printf("(%d/5)[%d, %d]\n",i+1,i,j);}printf("\n");// 콤마 연산식의 결과값은 마지막 식의 값이다.intx=1,y=2,z;z=(x=x+1,y=y+1);printf("z : %d\n\n",z);}
1
2
3
4
5
6
7
8
9
a + b = 4
(1/5)[0, 4]
(2/5)[1, 3]
(3/5)[2, 2]
(4/5)[3, 1]
(5/5)[4, 0]
z : 3 # y = y + 1 의 값이 들어옴
& 주소 연산자
1
2
3
4
5
6
7
8
voidaddress_operator(){intvalue=100;int*ptr_addr;ptr_addr=&value;printf("변수 value의 값: %d\n",value);printf("변수 value의 메모리 주소 (%%p): %p\n",&value);printf("포인터 ptr_addr에 저장된 주소 (%%p): %p\n",ptr_addr);}
1
2
3
변수 value의 값: 100
변수 value의 메모리 주소 (%p): 0x16b946eec
포인터 ptr_addr에 저장된 주소 (%p): 0x16b946eec
* 포인터 연산자
1
2
3
4
5
6
7
8
9
voidpointer_operator(){intdata=50;int*p;p=&data;intretrieved_value=*p;*p=100;printf("포인터 p가 가리키는 값: %d\n",retrieved_value);printf("값 변경 후 data의 값: %d\n",data);}
1
2
포인터p가가리키는값:50값변경후data의값:100
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
댓글 남기기