初始指针

指针(pointer)简介

  • 指针是一个值为内存地址的变量(或数据对象)

  • 地址与操作系统有关。内存地址是随机的。 指针间接获取地址,变量直接获取地址。C++ 入门学习 07 指针

  • C++ 入门学习 07 指针

  • 声明及初始化指针变量

  • 基本用法: 数据类型*指针变量名;

  • 例如: int * ptr_num; char * ptr_name; ( int num =10; int * ptr_num; ptr_num = #)

  • C++ 入门学习 07 指针

  • 声明时尽量使用第一种理解方式。C++ 入门学习 07 指针

  • C++ 入门学习 07 指针

  • 取地址可以直接访问

C++ 入门学习 07 指针
C++ 入门学习 07 指针
在C++中通常那个情况下,ch 默认指的是一个字符串
需要对 ptr_ch 进行强制转换。 (void*)任意类型
C++ 入门学习 07 指针
空指针
空指针;空指针不指向任何对象,在试图使用一个指针之前可以首先检查是否为空
C++ 入门学习 07 指针
C++ 入门学习 07 指针
没有赋值的指针为野指针,可能篡改内存的地址(若关键地址被改,危险)
void指针*
一种特殊的指针类型,可以存放任意对象的地址
C++ 入门学习 07 指针
void* 的类型不清楚,不能直接修改,编译器会拒绝。。。

指针小结
C++ 入门学习 07 指针
数组中存指针,省空间。
引用
引用就是为了对象起了另一个名字(引用即别名)
指向常量的引用是非法的。
const double & ref =100; 指向常量的引用前加const
C++ 入门学习 07 指针

指针和引用
C++ 入门学习 07 指针
C++ 入门学习 07 指针
指针和数组
C++ 入门学习 07 指针
指针运算
C++ 入门学习 07 指针
指针描述的是位置
自减 ---------------- 向下移动
自加------------------向上移动
C++ 入门学习 07 指针

动态分配内存
C++ 入门学习 07 指针

p-------栈区 在堆区分配了一块int 型空间
int *p = new int;
p++;
(尽量不要用这种操作,太危险)
delete p;
p指向了下一块空间,但是 new int 这块空间还是存在的。只是没有指针指向那块空间,这个指针叫野指针,或者叫内存泄露。
**编译时 int num[56];
运行时 int *nums = new int[5]; **
C++ 入门学习 07 指针
运行时 (运行时才给地址) 堆内存中分配了5个内存空间,才把这个空间分配给这个地址。。。。这是地址大小,不是空间大小
而编译时是 直接分配
C++ 入门学习 07 指针
C++ 入门学习 07 指针
真正的内存在栈区,不在堆区

实操

C++ 入门学习 07 指针
数组逆序
C++ 入门学习 07 指针
二维数组与指针
5行3列的二维数组
C++ 入门学习 07 指针
p2[i][j 相当于 *( *(p2+i) + j)
C++ 入门学习 07 指针
C++ 入门学习 07 指针

指针小结

C++ 入门学习 07 指针
指针 是 变量(值是内存地址)
指针是一个16进制的数值 int *p = FFFF 不能这样
int
p_num = # //定义的时候 &是取num的地址给 p_num,定义的时候 int
是指针类型
p_num = 112; 是取p_num的地址的值

int num1;
int & num = num1; 引用
const int& num = 89;

指针移动 ----实际上是变量存储地址的移动
double *p1-- p2++
每次移动8个字节

int num[10];
int *p_num =num;
sizeof(num) sizeof(p_num)
数组是有类型的!
int[]----------------

相关文章: