版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a740169405/article/details/79417208
使用以下的一个例子来记录指针变量的知识内容
#include <iostream>
int main() {
// 定义一个变量 i, 并赋值为 0
int i = 0;
// 输出变量i的内存地址,0x7ffee9eec818
std::cout << &i << std::endl;
// 定义一个指针变量,不对该指针变量进行赋值
int *p = 0;
// 打印指针变量的地址,0x7ffee6725808
std::cout << &p << std::endl;
// 直接使用未初始化的指针变量会报错
// Process finished with exit code 11
// std::cout << *p << std::endl;
// 定义一个引用变量,并赋值为指针对象p
int *&m = p;
// 把引用变量的地址打印出来,和指针变量的一致,0x7ffee6725808
std::cout << &m << std::endl;
// 为指针变量赋值
p = &i;
// 为引用变量所指向的指针变量所指向的整型变量 i 赋值
*m = 222;
// 输出整型变量 i 的值, 222
std::cout << i << std::endl;
// 定义一个指向指针变量的指针变量。
int **k = &p;
// 为整型变量 i 赋值
**k = 333;
// 输出整型变量 i 的值, 333
std::cout << i << std::endl;
// 定义一个指向指针变量类型的指针的引用变量
int **&b = k;
// 为整型变量 i 赋值
**b = 444;
// 输出整型变量 i 的值, 444
std::cout << i << std::endl;
// 定义一个void类型的指针变量
void *x = &i;
// 不能为void类型指针所指向的对象赋值,编译期会报错,因为不知道指针所指向的对象的类型是什么。
// *x = 1;
// 只能赋值给其他的void类型的指针变量
void *y = x;
// 不能赋值给其他类型的指针变量,编译期会报错。
// p = x;
// 不能取得void类型指针变量所指向的内容,编译期会报错。
// std::cout << *x << std::endl;
return 0;
}