2017-02-09 57 views
2

我试图初始化像如何在C初始化long类型的指针变量

long *status =1L; 

它给我错误long类型但─值long类型的指针变量不能用于初始化long*类型的实体。请帮帮我 。 谢谢。

+2

为什么你想在第一个指针?你想用这个指针做什么? – Danh

+1

这是因为你试图给存储地址的指针指定1。 –

+0

可能的重复[为什么我应该使用指针而不是对象本身?](http://stackoverflow.com/questions/22146094/why-should-i-use-a-pointer-rather-than-the-object - 本身) –

回答

1

接取到任何正常变量可以是: - 。通过使用变量的名称。 。通过使用变量的地址。 注意: - 就像你可以通过使用他/她的名字或在社会中使用他/她的地址来找到一个人。

Ques。什么是指针变量?它与我们使用的普通变量不一样吗? Ans。指针是一个“特殊”变量,它包含(指向/参考)另一个变量在内存中的地址。

point 1.我们可以有一个指向任何变量类型的指针。 第2点。它用于间接访问变量第3点。其要记住的关键。指针的类型定义了它可以指向(引用)的变量的类型。

现在,来找你问题: - 你想存储一个长的值,即1L在一个指针变量。 根据“使用指针”完全错误。

指针的概念 - >

每当一个变量声明,系统将分配一个位置,以该变量在存储器中,持有值。该位置将拥有自己的地址号码。

让我们假设系统为变量a分配了内存位置80F。

int a = 10 ; 

enter image description here

我们可以通过使用变量名或一个地址80F或者访问该值10。由于内存地址只是数字,因此可以将其分配给其他变量。保存内存地址的变量称为指针变量。因此指针变量不过是一个包含地址的变量,该地址是另一个变量的位置。指针变量的值将被存储在另一个内存位置。

enter image description here

+0

如果您喜欢我的方式来有效地解决您的问题,那么您可以投票或接受答案.. :)否则,分享您的意见或任何其他疑问。 ;) –

+1

是的,谢谢大家的帮助,这是我的错误。 – Robert

+0

没关系......;) –

1

您正在将值1L赋值给一个地址。将其更改为:

long x = 1L; 
long *status = &x; 
1

指针变量用于存储某些内存地址。你在这里试图做的是在指针中存储一些值(这是错误的)。 1L是您尝试存储在类型为long*(这是错误说的内容)的指针中的类型long的值。做到这一点的正确的方法是:

首先,存储在存储器中的值:

long lg = 1L; 

其次,初始化指向上述变量的存储器位置的指针:

long* lptr = ≶ //&lg means address of the variable lg 

要访问值1L您可以选择以下任意方法:

printf("%ld",lg); 

OR

printf("%ld",*lptr); 

两者中的printf的输出将是相同的

+0

“*内存地址(整数)*”内存地址不一定需要是一个整数。 – alk

+0

@alk是的,你是对的。 _“内存地址(整数)”_可能会引起误解。 –