IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 指针初阶1 -> 正文阅读

[C++知识库]指针初阶1

指针是什么?

我们可以这样理解

编号——地址——指针? ? ? ? ?地址存起来需要变量,所以存放地址的变量又被称为指针变量

int main()
{
    int a = 10;//在内存中开辟一块空间,a占4个字节
    int * pa = &a;//对变量a取出它的地址,拿到的是a的4个字节中第一个字节的地址
    //将a的地址放入pa变量中,*说明pa是指针变量
        *pa = 20;
    return 0;
}

总结:(1)内存被划分成了一个个小单元,一个单元一个字节;

(2)对每个小单元进行编号(3)要把编号存起来,所以引出指针变量存放地址

(4)指针的大小在32位平台的大小是4个字节,在64位平台的大小是8个字节。

指针和指针类型

?指针的大小相同,那么说明指针类型是没有意义的,这么说是不是可以创建一个通用类型的指针呢?但现实确是不行的,所以也可以说明指针类型是又意义的

指针类型的意义是什么?

1、指针类型决定了:指针解引用的权限有多大(能操作几个字节);

int能访问4个字节

?char能访问1个字节

?2、指针类型决定了:指针走一步,能走多远(步长)?

?字符指针+1相当于跳过了1个字符,所以+1;整型指针+1相当于跳过了一个整型,所以+4.

p+1加几取决于p的类型,与p指向的对象和赋的值没有关系

3、 野指针

概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

野指针的成因

(1)指针位初始化

#include <stdio.h>
int main()
{
    int *p;//局部变量指针未初始化,默认为随机值
    *p = 20;//非法访问内存
    return 0;
}

2、指针越界访问

int main()
{
    int arr[10] = { 0 };
    int* p =arr;
    int i = 0;
    for(i=0;i<=10;i++)
    {
        *p = i;
         p++;   
    }
    return 0;
}

?3、指针空间的释放

int * test()
{
      int a = 10;
      return &a;//a出来后结束了生命周期,所以就销毁了
} 
int main()
{
     int *p = test();
     *p = 20;
     return 0;
}
详见动态内存

如何规避野指针

(1)指针初始化

*当不知道p应该初始化为什么地址时,直接初始化为NULL

int* p = NULL;

*明确知道初始值

int a = 10;
int* ptr = &a;

(2)小心指针越界——c语言本身不会检查数据的越界行为

(3)指针指向空间施放及时置NULL

(4)指针使用之前检查有效性

int* p = NULL;
if(p !=NULL)
     *p = 10;

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:05:37  更:2021-12-15 18:07:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:09:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码