Logo
Section 1 / 12

什么是指针?

了解C++中的指针。

检查点

什么是指针?

了解C++中的指针。

...
1.

Suppose we have a pointer variable that points to a char variable. What would be the size of this pointer? This pointer later on starts pointing to an int variable. What would be its size now?

0/500
1int var; 2int *var_pointer;
1int *var_pointer = nullptr;
1int var = 10; // 一个变量 2int *ptr = &var; // 指针,存储变量 var 的地址
1int value = *ptr;
1# include <iostream> 2using namespace std; 3 4int main() 5{ 6 int var = 10; 7 int *ptr = &var; 8 int value = *ptr; 9 cout << value; 10 return 0; 11}
...
指针解引用
1int *ptr = new int; // 动态分配一个整数的内存空间 2*ptr = 5; 3delete ptr; 4ptr = nullptr; // 防止悬空指针
...

表格对比

引用(Reference)指针(Pointer)
引用是另一个变量的别名。指针用于存储另一个变量的内存地址。
使用与号(&)声明。使用星号(*)声明。
必须在声明时初始化,不能为 null 或未初始化,必须始终绑定到一个已存在的变量。可以使用取址符(&)初始化为某个变量的地址,也可以设置为 nullptr 或 NULL,表示不指向任何变量。
一旦引用绑定到某个变量,就不能再修改为引用其他变量。指针在其生命周期内可以被重新赋值,指向不同的变量或内存位置。
1# include <iostream> 2using namespace std; 3 4void func(int * ptr) 5{ 6 if(ptr) 7 cout << "指针有效,解引用结果:" << *ptr << endl; 8 else 9 cout << "指针为空。" << endl; 10} 11 12int main() 13{ 14 int * ptr = nullptr; 15 func(ptr); 16}
1#include <iostream> 2using namespace std; 3 4void referenceUsingReference(int &num) { 5 num = num + 1; 6} 7 8void referenceUsingPointers(int *num) { 9 *num = *num + 1; 10} 11 12int UsingValue(int num) { 13 num = num + 1; 14 return num; 15} 16 17int main() { 18 int num = 6; 19 num = UsingValue(num); 20 cout << "number is:" << num << endl; 21 referenceUsingReference(num); 22 cout << "number is:" << num << endl; 23 referenceUsingPointers(&num); 24 cout << "number is:" << num << endl; 25 return 0; 26}
1#include <iostream> 2using namespace std; 3 4void swapPointers(int* a, int* b) { 5 // 在此处编写你的代码 6} 7 8int main() { 9 // 在此处编写你的代码 10 return 0; 11}

在主函数中:

  • 我们创建两个 int 类型的变量 x 和 y,并赋予初始值。
  • 然后打印它们交换前的值。
  • 调用 swapPointers(int *a, int *b) 函数,该函数接受两个整型指针作为参数,分别表示要交换的两个整数的内存地址。
  • 在函数内部,我们定义一个临时变量 temp,用于存储第一个指针 a 所指向的值。
  • 接着将 a 所指向的值更新为 b 所指向的值,最后将 b 所指向的值更新为 temp 中保存的原始值。
  • 这样就实现了原始整型变量值的交换。
  • 最后打印 x 和 y 的值,输出结果显示它们的值已成功互换。

Quiz

单选题

在指针的上下文中,表达式 int *ptr = nullptr; 表示什么?

1 / 3

变量与用户输入

什么是数组?