Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointers開始使用指針


備註

本節概述了什麼是指針,以及開發人員可能想要使用它的原因。

它還應該提到指針內的任何大型主題,並鏈接到相關主題。由於指針文檔是新的,您可能需要創建這些相關主題的初始版本。

指針入門

指針是存儲另一個變量地址的變量。作為語言特性,它們可用於多種編程語言,例如但不限於:

  • C / C ++
  • 阿達
  • 帕斯卡爾
  • C#(在某些限制條件下可用)
  • COBOL
  • FORTRAN

要開始使用C / C ++指針,請執行以下步驟

  1. 安裝編譯器,如Minimalistic GNU for Windows, http://www.mingw.org/wiki/Getting_Started

  2. 例如,通過命令行轉到g ++二進製文件的安裝文件夾:

    C:\MinGW\bin>
     

3.創建一個文本文件並編寫這個C ++程序

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. 另存為pointer.cpp 5.在命令提示符下運行命令

g ++ -o pointer.exe -c pointer.cpp

  1. 在工作目錄中,你將獲得一個可執行文件作為pointer.exe,運行時這個exe將給出一些輸出

指向變量的地址是:0x7e892dac0a0c

如果收到上述輸出,則表示已編寫第一個指針程序

什麼是指針?

它基本上是內存中變量的地址。它允許我們間接訪問變量。因此,使用指針我們可以通過解除引用指針來討論變量的地址(以及它的值)。當我們想要處理內存位置的地址而不是它的值時,它們很有用。

考慮C中的以下簡單交換函數:

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

現在在main中如果我們有以下代碼:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

a和b的值將保持不變,這可以通過在main函數中打印它們的值來清楚。要正確實現交換函數,我們不是傳遞變量ab 的值,而是將變量ab 的地址傳遞為:

swap(&a,&b);
 

operator & ,返回變量的地址。它使用如下:

int *address_of_a = &a;
 

int *address_of_a ,表示變量address_of_a 指向(存儲地址)整數變量。

現在我們正確的交換功能將是:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

現在互換的值將反映在main函數中:

int a = 9,b = 100;
swap(&a,&b);
//print
 

如果你沒有原始變量,你總是可以使用* 取消引用指針。假設在函數中你沒有原始變量但是它的地址在指針變量int *x 。我們可以簡單地訪問內存地址的value = *x ;

如果我們沒有指針,我們永遠無法模擬C 的引用傳遞 ,因為C按值傳遞的 。但請記住,我們只能模擬 ,因為即使我們使用指針, int *firstaddress, int *secondaddress 也只是創建的本地指針變量,它們具有變量ab 的地址。