• 文章
  • C++ 指针基础(第一部分)
发布
2009年4月6日

C++ 指针基础(第一部分)

评分:3.0/5(14 票)
*****
注意:在阅读本 C++ 指针简要概述时,您会看到一些
代码示例,这些示例旨在帮助说明和记录此处解释的概念。
代码示例的部分内容不具有结论性、可编译性,
也不保证没有类型声明或初始化错误。

如果您曾经使用过快捷方式(Windows)或符号链接(UNIX),您应该
会发现指针是一个相对容易的概念。有引用,然后有
指针(它查看被引用的值)。尽管在上下文中非常相似,
但在引用的正确使用和解释方面与指针的正确使用和解释
之间存在细微差别。

为了说明这一点,如果您可以想象在 Windows 桌面上有一个快捷方式。
这个快捷方式可以被视为一个指针,因为它直接“指向”目标
文件本身。引用就是我们目标文件的实际位置(或容器),
类似于邮寄地址(即,在哪里可以找到我们的目标?)。

在使用指针时,有两个运算符具有非常特定的功能
需要考虑。

引用(取地址):第一个是“&”符号,它放在现有
变量或函数之前,并返回它在内存中的实际地址(引用)。

例如:

1
2
3
4
5
char * varAuthor = "Matt Borja";

// a pointer (*) to another pointer (*), or simply **
char ** address_varAuthor = &varAuthor;
printf("Memory address of varAuthor: %x\n", address_varAuthor);


指针(解引用):另一个运算符是星号“*”,放在我们的地址变量
之前,它返回由引用指向的值。

例如:

 
printf("Value found at this memory address: %s\n", *address_varAuthor);


请记住,观察数据类型很重要,因为它们必须被视为
与 C++ 中的标准变量相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

int main()
{
	// declare char type varAuthor
	char * varAuthor = "Matt Borja";
	
	// reference variable addr_varAuthor of our original varAuthor
	char ** addr_varAuthor = &varAuthor;
	
	printf("Value of our original varAuthor is %s.\n", varAuthor);
	printf("Address (reference) of our original varAuthor is %x.\n", addr_varAuthor);
	printf("Value (pointer) of our address (%x) is %s.\n", addr_varAuthor, *addr_varAuthor);
	printf("Get it?\n");
	return 0;
}