336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

&, * 연산

연산.txt



#include <stdio.h>


C언어로 포인터의 필요성 설명(콜바이 벨류)


void swap( int val1, int val2)        //swap 메소드 선언

{

        printf("tmp val1=%d , val2=%d \n", val1,val2 );    //tmp val1=10진수 정수, val2=10진수 정수    

        int tmp;

        tmp = val1;                    //tmp, val1, val2가 서로 맞물리면서 교환한다.

        val1 = val2;

        val2 = tmp;

        printf("tmp val1=%d , val2=%d \n", val1,val2 );                    

}


int main(int argc , char * argv[])

{

        int a, b;

        a =1 ;

        b = 2;

        printf("a=%d , b=%d \n", a,b );        //a=1, b=1 확인   


        swap(a,b);

        printf("a=%d , b=%d \n", a,b );                

        return 0;

}


------출력----------------------------------------------------------------------------------

a=1 , b=2                                

tmp val1=1 , val2=2                  

tmp val1=2 , val2=1                    

a=1 , b=2                                


다시 정리하자면

변수가 4개 선언되는데 a,b 그리고 val1, val2

a,b에 가각 1,2를 넣고, 이걸 swap메소드로 갖고와서 연산후에는

swap메소드안의 val1,val2는 증발해버린다.

그럼 결국 원래의 a,b의 1,2값에는 변화가 없다.




===================================================================

콜바이 레퍼런스 (포인터)

#include <stdio.h>

{

        printf("tmp val1=%d , val2=%d \n", *val1,*val2 );            //

        int tmp;

        tmp = *val1;                                        //가리키고있는 변수의 값

        *val1 = *val2;

        *val2 = tmp;

        printf("tmp val1=%d , val2=%d \n", *val1,*val2 );            //

}


int main(int argc , char * argv[])

{

        int a, b;

        a =1 ;

        b = 2;

        printf("a=%d , b=%d \n", a,b );            //


        swap(&a,&b);            //a의 주소값, b의 주소값 

        printf("a=%d , b=%d \n", a,b );            //

        return 0;

}


-------출력---------------------------------------------------------------------------------------------

a=1 , b=2                                //

tmp val1=1 , val2=2                //

tmp val1=2 , val2=1                //

a=2 , b=1//




===================================================================

#include <stdio.h>


int main(int argc , char * argv[])

{

        int *p;

        int a = 2;

        p = &a;

        printf("%p %p \n" , p, &a);

        printf("%d %d \n" , *p, a);

        a =3 ;

        printf("%d %d \n" , *p, a);

        return 0;

}


-------출력-----------------------------------------------------------------------------------

0xbff6b118 0xbff6b118

2 2

3 3



Posted by ElectricShock
:
BLOG main image
잡동사니들(지극히 개인취향인...) (다른글에도 댓글 부탁해요♥) You May Leave English Messages on GuestBook. by ElectricShock

공지사항

카테고리

분류 전체보기 (782)
Programming(=프로그래밍) (3)
MiDi (2)
Animation (4)
Blender (3D Graphic Program.. (10)
Blendtuts.com (Series) (1)
Blender 기초 팁들 (2)
Processing (디지털미디어과) (2)
Music (1)
Books in the world (0)
Communication(CAN, UART, et.. (12)
MCU Examples (PIC 기반) (7)
Transistor (1)
Mikro C Pro (11)
Mikro Pascal (1)
Proton IDE (0)
Robot (0)
Swift 3D (1)
Dummies Series (1)
All about Hacking (0)
제2 외국어 (1)
PIC 해외서적들 (3)
AVR (25)
PIC (MikroC) (MPLAB) (4)
Assembly (2)
ARM (3)
Arduino (26)
PSpice (1)
Proteus ISIS (14)
CodeVision (2)
FPGA (15)
MPLAB (24)
PCB (the Procedure) (15)
3D Printer (5)
PICKIT3 (6)
Matlab (11)
RaspBerry PI (15)
BeagleBone (1)
Android Studio (17)
졸업작품 (172)
Korea History (0)
Issue(사회) (73)
Multimeter 리뷰 (1)
Oscilloscope (1)
A (34)
B (19)
J (6)
C (32)
P (12)
T (37)
H (12)
I (12)
M (44)
R (5)
E (5)
F (2)
D (9)
O (2)
L (7)
S (9)
W (2)
V (6)
G (14)
Visual C++ or Visual Studio (2)
Android App Development (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백