簡體   English   中英

很少有人懷疑C中的指針

[英]Few doubts about pointers in C

1)初始化我使用的指針:

int number, *Pnumber;
    Pnumber=&number;
    number=10;

我這樣做了嗎?

關於什么:

int *Pnumber;
*Pnumber=10;

當我編譯它時,我得到:

RUN FAILED(退出值1,總時間:858ms)

順便說一句。 我需要使用免費(Pnumber)來釋放內存嗎?

我這樣做了嗎?

是的,你是。

關於什么:

  `int *Pnumber;  
   *Pnumber=10;`

Pnumber是一個單位指針。 取消引用此指針會導致未定義的行為。 Pnumber必須指向已分配的內存(對於變量或動態分配的內存區域)。

順便說一句。 我需要使用免費(Pnumber)來釋放內存嗎?

只要你不使用malloc ,就不要free使用。

在第一個版本中,您將指針Pnumber指向已經分配的內存,因此您可以更改指針指向的值。 這個版本是正確的。 在第二個版本中,您永遠不會指定指向的指針(它保持未初始化),因此當您嘗試訪問內存時,這將導致錯誤。 所以第二個版本正確。

你的第一種方法是對的。

但這錯了:

int *Pnumber;
*Pnumber=10;

因為指針不指向有效內存,而在第一種方法中它指向有效內存。

第一個是正確的

在第二個中,您缺少將指針指向內存空間。

指針是一個地址

如果我們有

int *p;

這意味着p是一個地址

* p是內存地址的內容。

所以在填充內存之前,指針應該指向一個內存空間

*p = 5;

如果您使用指針,則“指向您所做的變量:

 int number, *Pnumber;
Pnumber=&number;
number=10;

指針的優點是可以節省內存到程序,所以如果你想改變32位整數的數值,你可以使用* Pnumber = 10; 在這里你使用整數,但如果你使用它們的數組或雙重或浮動它的大量內存,為什么你最好在32位OS體系結構中保存32位變量的地址總是使用指針在didn'無論你指的是什么類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM