2016-07-29 2 views
-1

그들은 거의 같은 목적을 가지고있는 것처럼 보입니다. 그들은 포인터가 데이터 위치의 메모리 주소 일 뿐이므로 대형 객체와 데이터를 전달하는 대신 숫자 만 전달한다는 점을 알려주었습니다. 하지만 여전히 차이점을 볼 수 없습니다.포인터는 전역 변수와 동일합니까?

하시기 바랍니다.

+2

완전히 별개의 개념입니다. 하나는 기억의 개념이고 다른 하나는 범위의 개념이다. – 4castle

+0

@ 4castle 답장으로 변환하고 정교하게 작성해야합니다. OP가 둘 사이의 차이를 이해하지 못할 수도 있습니다. – templatetypedef

+2

다음은 매우 좋은 답변입니다. http://stackoverflow.com/questions/1892198/whats-the-difference-between-pointers-and-global-variables-in-c –

답변

2

아니요, 가리키는 대상에 액세스하기 위해 포인터에 액세스해야하므로 동일하지 않습니다.

포인터를 전역으로 설정하지 않으면 어디에서나 가리키는 포인터에 액세스 할 수 없습니다.

+1

그 다음에도 데이터는 글로벌이어야합니다. 그래서 포인터는 가비지 수집 된 것을 가리 키지 않습니다. – 4castle

0

저는 여러분이 C++에 대해 말하는 것으로 가정 할 것입니다. 포인터는 전역 변수에 할당하지 않으면 전역 변수가 아닙니다. 다음은 c의 예제이며 C++에서도 동일해야합니다.

#include <stdio.h> 

int x = 5; //Global variable 
int* x_pointer = &x; //global pointer that holds the address of x 

int main() { 
    int y = 43; //Local variable 
    int* y_pointer = &y; //local pointer that holds the address of y 
    return 0; 
} 

희망이 있습니다.

1

포인터은 메모리 주소를 저장하는 변수 유형입니다. 다른 변수와 마찬가지로 범위를 가질 수 있습니다. A 글로벌 변수는 전역 범위가있는 변수이므로 아무 곳에서나 액세스 할 수 있습니다.

포인터가 글로벌이기 때문에 메모리의 데이터가 전역임을 의미하지는 않습니다. 메모리에있는 데이터가 가비지 수집 범위 (예 : if 문 끝 또는 function 끝)에서 가면 포인터는 다시 용도가 지정된 메모리를 가리키며 해당 메모리 주소의 값은 예측할 수 없습니다.

포인터가 일반적으로 로컬 변수 을 공유하는 방법으로 사용되며 전역 변수를 만들지 않습니다. 대신, 당신은 이 원하는 값을 가진 사람에게이 원하는 기능에 대한 포인터 만 전달합니다.

관련 문제