本节概述了什么是指针,以及开发人员可能想要使用它的原因。
它还应该提到指针内的任何大型主题,并链接到相关主题。由于指针文档是新的,您可能需要创建这些相关主题的初始版本。
指针是存储另一个变量地址的变量。作为语言特性,它们可用于多种编程语言,例如但不限于:
要开始使用C / C ++指针,请执行以下步骤
安装编译器,如Minimalistic GNU for Windows, http://www.mingw.org/wiki/Getting_Started
例如,通过命令行转到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;
}
g ++ -o pointer.exe -c pointer.cpp
指向变量的地址是: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函数中打印它们的值来清楚。要正确实现交换函数,我们不是传递变量a
和b
的值,而是将变量a
和b
的地址传递为:
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
也只是创建的本地指针变量,它们具有变量a
和b
的地址。