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 的地址。