指针类型与指针变量的定义
指针类型与指针变量的定义
理解 C++指针类型的概念,掌握指针类型变量的定义。
指针变量存放的是另一变量的地址,而不是数值本身。定义时在类型后加 *,例如 int *p; 表示 p 是指向 int 的指针。未初始化前不要解引用,否则行为未定义。
GESP 四级常考:指针类型与所指类型是否匹配、nullptr 与野指针区别、* 在定义与表达式中的不同含义。120 分钟笔试里,选择题常给一段小代码,问 p 的类型或 sizeof(p) 与 sizeof(*p) 谁大。
int score = 85;
int *p = &score; // p 保存 score 的地址
// *p 的类型是 int,p 的类型是 int*
先分清「指针本身」和「指针指向的对象」,后面赋值与解引用才不容易混。
在 C++ 中,下面代码可以正确定义指针和初始化指针。
int* ptr;
*ptr = 10;
假设整数数组 arr[4] = {0, 1, 2, 3}; 的第一个元素在内存中的地址为 0x7ffee4065820,经过 int* p = arr; p += 1; 后,指针 p 的值是 1。
在 C++ 中,声明一个指向整型变量的指针的正确语法是( )。
以下关于数组的描述中,( )是错误的。
以下代码能正确初始化指针。
int a = 5;
int *p = a;
小杨想让指针 p 指向整数变量 x,正确写法是( )。
执行下面的 C++ 代码,会输出 8,因为两个指针地址相差 8 个字节(假设 int 占 4 字节)。
int arr[5] = {1, 2, 3, 4, 5};
int* p1 = arr;
int* p2 = arr + 2;
cout << p2 - p1; // 输出结果
在 C++ 中,如果声明了一个指针变量但没有显式初始化,该指针会自动被初始化为 nullptr。
下面代码可以通过编译。
int a[5];
a++;