指针与全局变量是否相同?

时间:2016-07-29 01:09:51

标签: variables pointers

它们似乎或多或少有相同的目的。 他们告诉我,指针只是数据位置的内存地址,因此您只需传递一个数字,而不是传递大型对象和数据。 但我仍然看不出差异。

请解释一下。

3 个答案:

答案 0 :(得分:2)

不,它们不是一样的,因为你需要访问指针才能访问指向的内容。

除非你将指针设为全局,否则你无法从任何地方访问它所指向的内容。

答案 1 :(得分:1)

指针是一种存储内存地址的变量。它们可以像任何其他变量一样具有范围。 全局变量是具有全局范围的变量,这意味着它可以从任何地方访问。

仅仅因为指针是全局的,它并不意味着内存中的数据是全局的。如果内存中的数据是从超出范围的垃圾收集(例如从if语句结束或function结束),指针现在将指向重新使用的内存,以及该值的值内存地址将无法预测。

如果有的话,指针通常用作共享局部变量的方法,而不用创建全局变量。相反,您只将指针传递给您想要的函数以与.x共享值。

答案 2 :(得分: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;
}

希望这有帮助!