• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목c++에서 array와 pointer2019-04-09 17:27
작성자

#include <iostream>


using namespace std;


int main()

{

int a[]={3,4,5,6,7,8};

int *p=a;

// a는 array이므로? 4바이트의 int가 6개니까 24바이트 

// a+0 은 pointer 이므로? int하나를 가리키는 8바이트 

      cout<<sizeof(a)<<endl;    //24

cout<<sizeof(a+0)<<endl;    //8

cout<<sizeof(p)<<endl;      //8

cout<<a[20]<<endl;

cout<<p[20]<<endl;

}


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

옛날부터 조금 헷갈렸던 내용인데요.

array name과 pointer는 혼용해서 쓸 수 있다고 알고 있습니다.

근데 array name과 pointer가 완전같다고 볼 수 있는가? 에 대해 잘 모르겠습니다.

교수님께서는 compiler는 애초에 array를 pointer로 바꿔서 생각해버린다고 설명하신 것 같은데,

그렇다기에는 코드에서 보이듯, sizeof(array)를 하면 array의 크기가 나오지만, sizeof(p)를 하면 그냥 포인터 p의 크기가 나오잖아요? 

1. 따라서 array name과 pointer과 완벽히 같다고는 볼 수 없는 것 같은데

둘이 다른 게 무엇인가요? 제가 느끼기에는 a+0와 p는 완벽히 같다고 생각합니다.


또한 array size를 생성할 때 지정하잖아요. 

2. 근데 왜 array size를 넘어가는 index를 주어도 작동이 되는 지 궁금합니다. 

엄청 큰 index를 주면 값이 안 나오고, size보다 큰 값 중 적당히 큰 값을 넣어주면 0으로 나오더라구요.

그냥 컴파일러나 OS가 적절히 array size와 비슷한 어느정도까지는 메모리를 잡아놓는 것이잖아요?






댓글