C Programming address c include stdio h int





















- Slides: 21
C Programming 변수의 주소 예 //변수와 주소(address. c) #include <stdio. h> int main() { char c = 'A'; int i = 123; float f = 4. 56 f; double d = 78. 9; >>변수의 값과 주소 c = A, &c = 0012 FF 7 C i = 123, &i = 0012 FF 78 f = 4. 56, &f = 0012 FF 74 d = 78. 90, &d = 0012 FF 6 C d 12 FF 6 C 78. 90 printf(">>변수의 값과 주소n"); printf("c = %c, &c = %pn", c, &c); printf("i = %d, &i = %pn", i, &i); printf("f = %. 2 f, &f = %pn", f, &f); printf("d = %. 2 f, &d = %pn", d, &d); f 12 FF 74 4. 56 i } 12 FF 78 123 c 포인터 12 FF 7 C ‘A’ 5
포인터 변수 사용 예 //포인터와 변수형(pointer. c) #include <stdio. h> int main() { char c = 'A'; char *pc; int i = 123; int *pi; float f = 4. 56; float *pf; double d = 78. 9; double *pd; //변수 c의 주소를 pc포인터 변수에 대입 //같은 데이터 형의 포인터변수를 이용하여 변수의 주소 대입 pc = &c; pi = &i; pf = &f; pd = &d; printf(">>변수의 주소n"); printf("&c = %p, &pc = %pn", &c, &pc); printf("&i = %p, &pi = %pn", &i, &pi); printf("&f = %p, &pf = %pn", &f, &pf); printf("&d = %p, &pd = %pn", &d, &pd); printf(">>변수의 값n"); printf("c = %5 c, pc = %X, *pc = %5 cn", c, pc, *pc); printf("i = %5 d, pi = %X, *pi = %5 dn", i, pi, *pi); printf("f = %5. 2 f, pf = %X, *pf = %5. 2 fn", f, pf, *pf); printf("d = %5. 2 f, pd = %X, *pd = %5. 2 fn", d, pd, *pd); 11 printf(">>변수의 크기n"); printf("sizeof(c) = %dn", sizeof(c)); printf("sizeof(i) = %dn", sizeof(i)); printf("sizeof(f) = %dn", sizeof(f)); printf("sizeof(d) = %dn", sizeof(d)); printf("sizeof(pc) = %dn", sizeof(pc)); return 0; } <출력결과> >>변수의 주소 &c = 12 FF 7 C, &pc = 12 FF 78 &i = 12 FF 74, &pi = 12 FF 70 &f = 12 FF 6 C, &pf = 12 FF 68 &d = 12 FF 60, &pd = 12 FF 5 C >>변수의 값 c= A, pc = 12 FF 7 C, *pc = A i = 123, pi = 12 FF 74, *pi = 123 f = 4. 56, pf = 12 FF 6 C, *pf = 4. 56 d = 78. 90, pd = 12 FF 60, *pd = 78. 90 >>변수의 크기 sizeof(c) = 1 sizeof(i) = 4 sizeof(f) = 4 sizeof(d) = 8 sizeof(pc) = 4 포인터 C Programming
포인터 증가 예 0 : 1000 short *pi; short i 1 = 123, i 2 = 456; pi = &i 2; pi++; //pi = pi + sizeof(i 2)*1 //sizeof(short) == 2 *pi ? ? … 1001 pi i 2 1002 sizeof(i 2) 1003 pi++ 456 i 1 1004 1005 123 pi 1006 … 1009 : 32 2 -1 13 포인터 1004 1002 … C Programming
포인터 연산 예 //포인터 연산 #include <stdio. h> int main() { int i 1 = 123, i 2 = 456; int *pi; <출력결과> &i 1 = 0012 FF 7 C, i 1 = 123 &i 2 = 0012 FF 78, i 2 = 456 Before : pi = 0012 FF 7 C, *pi = 123 pi-- : pi = 0012 FF 78, *pi = 456 pi++ : pi = 0012 FF 7 C, *pi = 123 pi = &i 1; printf("&i 1 = %p, i 1 = %5 dn", &i 1, i 1); printf("&i 2 = %p, i 2 = %5 dn", &i 2, i 2); printf("Before : pi = %p, *pi = %5 dn", pi, *pi); pi--; // == (pi = pi - 1); printf("pi-- : pi = %p, *pi = %5 dn", pi, *pi); pi++; // == (pi = pi + 1); printf("pi++ : pi = %p, *pi = %5 dn", pi, *pi); return 0; } 14 포인터 C Programming
포인터 변수 형 변환 예 //포인터 형 변환 (pointer. Cast. c) #include <stdio. h> int main(){ int i = 65; int *pi; char *pc; pi = &i; printf("pi = &i => pi = %p, *pi = %5 dn", pi, *pi); pc = (char *)pi; printf("pc = (char *)pi => pc = %p, *pc = %5 dn", pc, *pc); *pc = 'B'; printf("*pc = 'B' => pi = %p, *pi = %5 dn", pi, *pi); printf(" => pc = %p, *pc = %5 dn", pc, *pc); pi = &i => pi = 0012 FF 7 C, *pi = 65 pc++; pc = (char *)pi => pc = 0012 FF 7 C, *pc = 65 printf("pc++ => pi = %p, *pi = %5 dn", pi, *pi); *pc = 'B' => pi = 0012 FF 7 C, *pi = 66 printf(" => pc = %p, *pc = %5 dn", pc, *pc); => pc = 0012 FF 7 C, *pc = 66 i = 256; pc++ => pi = 0012 FF 7 C, *pi = 66 printf("i = 256 => pi = %p, *pi = %5 dn", pi, *pi); => pc = 0012 FF 7 D, *pc = 0 printf(" => pc = %p, *pc = %5 dn", pc, *pc); i = 256 => pi = 0012 FF 7 C, *pi = 256 => pc = 0012 FF 7 D, *pc = 1 } 16 포인터 C Programming