포인터 타입의 장단점은 여러가지가 있지만 대표적인것들만 몇가지 적어보도록 하겠습니다.
포인터 변수라는것 자체가 주소를 담을수 있는 변수이기 때문에 혼자로서는 의미가 없습니다.
즉 혼자서는 사용할수 없는 변수이죠 하지만 포인터 변수가 가지는 장점은 많이 있습니다.
장점
1. 포인터 변수는 4바이트의 주소만 가지게 됩니다. 그렇기 때문에 함수의 인자로 넘길경우
메모리의 복사도 4바이트만큼만 일어나게 됩니다. 클래스와 같이 덩치가 큰 객체도 포인터 형으로
전달될경우 해당 메모리의 첫번째 주소값이 넘어가기 때문에 불필요한 메모리의 복사가 일어나지 않게
됩니다.
2. 포인터 변수는 주소를 컨트롤 하기때문에 처리속도가 나쁘지 않습니다. 상수단위의 처리속도는 나오지
않겠지만 주소를 직접적으로 컨트롤 하기때문에 데이터에 대한 접근이 빠르다는 장점이 있죠.
3. 포인터 변수는 주소를 컨트롤 하기때문에 원본에대한 값의 변경이 용이합니다. 만일 함수에서
해당 처리값을 변경하고 싶을경우 포인터변수로 처리하거나 레퍼런스로 변경하지 않을경우
값을 리턴받아 처리하지않으면 바꿀수가 없습니다.
단점
1. 포인터 변수는 주소를 직접적으로 컨트롤하기 때문에 예외에 대한 처리가 확실하지않을경우
예상하지 못한 문제가 많이 발생합니다.
즉 널 포인터같은경우에 바로 접근할경우에 예외가 발생합니다.
사용전 메모리를 가르키고 있는지 확인해야 합니다. 하지만 선언만하고 초기화를 하지않을경우
쓰레기 주소를 가르키고 있기 때문에 사용에 주의해야합니다.
2. 포인터 변수는 주소를 직접 참조하기 때문에 의도하지않게 원본의 값이 수정될수 있습니다.
이점도 주의해야하는점이죠
3. 포인터 변수의 대입을 하게되면 서로 같은 주소를 가르키게 되기때문에 한쪽을 삭제하면
프로그램이 죽을때 또한번 지우려고해서 예외가 발생하게 됩니다. 이런경우도 조심해야하는
이유고 단점이 될수도 잇죠
하지만 단점보다는 장점이 많기 때문에 포인터를 많이 사용합니다.
포인터로 검색을 해보시면 더욱 많은 정보가 있으리라 예상되니 필히 검색해보시기 바랍니다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tobik&logNo=50148364543
'Development > C++' 카테고리의 다른 글
배열과 포인터(포인터로 배열 다루기 1.) (0) | 2022.03.25 |
---|---|
[C언어] 포인터 장단점, 포인터와 배열의 차이 (0) | 2022.03.25 |
포인터 개념 (0) | 2022.03.25 |
std::auto_ptr (0) | 2022.03.17 |
'vsvars32.bat' (VsDevCmd.bat) equivalence of VS2019 and VS2015 (0) | 2022.03.17 |