2017-02-09 62 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是的,你是對的。 _「內存地址(整數)」_可能會引起誤解。 –