目录:

  • 1.野指针
    • (1)什么是野指针?
    • (2)野指针的成因
      • a.指针未初始化
      • b.指针访问越界
      • c.指针指向的空间释放了
  • 2.指针数组和数组指针
    • (1)指针数组
    • (2)数组指针
    • (3)指针数组和数组指针+1的区别

1.野指针

(1)什么是野指针?

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

(2)野指针的成因

a.指针未初始化

全局变量,静态变量未初始化默认是会初始化的,默认是0
其他变量都不会初始化,默认是随机值
eg:

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

b.指针访问越界

eg:

#include<stdio.h>
int main()
{int* arr[10] = { 0 };int* p = arr;for (int i = 0; i < 11; i++){//当指针指向的范围超出数组arr的范围时,p就是野指针*(p++) = i;}return 0;
}

c.指针指向的空间释放了

eg:

#include<stdio.h>
int* test()
{int a = 10;return &a;
}
int main()
{int* p = test();printf("%d\n", *p);return 0;
}

2.指针数组和数组指针

(1)指针数组

指针数组是一个数组,存的是指针
eg:

int* arr[3]

(2)数组指针

数组指针是一个指针,指的是数组
eg:

int A[10];
int (*p)[10] = &A;

(3)指针数组和数组指针+1的区别

#include<stdio.h>
int main()
{int* A[8] = { 0 };int* p = &A;int(*pa)[8] = &A;printf("%p %p\n", p,pa);printf("%p %p\n", p + 1,pa + 1);return 0;
}


当给两个数组同时加1时,指针数组改变了一个类型的大小,数组指针改变了一个数组的大小

野指针,数组指针,指针数组相关推荐

  1. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

  2. c/c++教程 - 1.9 指针 空指针 野指针 const修饰指针 指针常量 常量指针 指针和数组 指针和函数

    十一.指针 (1)指针的定义和使用 指针的作用:可以通过指针间接访问内存. 参考视频:https://www.bilibili.com/video/BV1et411b73Z?from=search&a ...

  3. 释放内存触发断点及数组、指针的NULL初始化

    Visual Studio调试时,出现"触发一个断点"内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 char Outi[4] = { NULL }; ...

  4. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  5. 二级(多级)指针,二级指针和二维数组的避坑,指针面试考题

    1.二级指针的的认识 2.二级指针的实战 想获得二维数组的某个人的位置,采用的是return的方式 如果把第三行的int * 换成void ,把ppos换成传参的方式做. 结果崩溃了 原因是 是个野指 ...

  6. C语言再学习 -- 再论数组和指针

    之前有总结指针数组,但是现在看来总结的太简单了.好多重要的知识点都是一带而过的.本想在后面添加后来想想算了,还是再写一篇文章来详细介绍数组和指针这对冤家吧. 之前总结的,参看:C语言再学习 -- 数组 ...

  7. C语言中的二级指针和二维数组问题

    关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组 首先来看看二维数组在内存中是如何组织的呢? 一维数组 T arr1 = new T[9]  二维数组T arr2 = new T[ ...

  8. 出参传递数组指针_C语言指针重难点详解

    1为什么使用指针 假如我们定义了 char a='A' ,当需要使用 'A' 时,除了直接调用变量 a ,还可以定义 char *p=&a ,调用 a 的地址,即指向 a 的指针 p ,变量 ...

  9. C语言指针变量与一维数组

    数组元素之间的地址是相连的: 变量地址绝对不是相连的,如果找到规律那也只是一个偶然的,不是必然的: 1. 指针变量和一位数组 下面对指针数组进行分析,index(小标是从0开始),array数组是in ...

  10. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针

    指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...

最新文章

  1. “西南偏南” 三十年首次 “聚焦中国”
  2. 在IIS7上导出所有应用程序池的方法批量域名绑定(网站绑定)
  3. mysql 结构对比工具_Mysql 数据库结构 对比工具
  4. linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
  5. 通过iframe引入另外一个项目中的html片段到项目中,解决样式,高度,兼容等问题的策略
  6. 1. Spring boot 之热部署
  7. python缩进说法_【多选题】关于Python程序中与“缩进”有关的说法中,以下选项中错误的是()。...
  8. IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
  9. 执行效率太低又怎样? Python 照样火过 Java、C/ C++
  10. Flask源码解析:从第一个版本开始阅读Flask源码
  11. angularjs 学习笔记(一) -----JSONP跨站访问
  12. 微信小程序组件slider
  13. 「专题训练」Collecting Bugs(POJ-2096)
  14. 认识三大方便的开源 Linux 防火墙生成器
  15. android自带下拉阻尼动画,Android 自带阻尼效果的ScrollView,仿ios效果
  16. 口袋妖怪lets go服务器维护中,口袋妖怪lets go攻略 口袋妖怪lets go新手攻略(中)...
  17. 计算机毕业设计asp.net会员积分兑换系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
  18. Bypass 360主机卫士SQL注入防御(多姿势)
  19. 非关系型数据库之Redis【redis安装】
  20. 【Java Web基础】(十一)Ajax示例:根据用户输入的学号填充用户信息

热门文章

  1. 苏宁易购开放平台_前三季度线上规模突破2000亿,苏宁易购三季度盈利7.14亿
  2. 开发者道路上的季度考核及360环评----------囚徒困境
  3. Google Earth Engine(GEE)——GEE版本的全球森林火灾信息获取并呈现2001-2020年四川省火灾亮度时间序列分析
  4. python从文件中读数据并进行排序
  5. 计算机毕业设计php+vue基于微信小程序的音乐云系统-音乐播放系统
  6. 需求评审会议如何召开
  7. 爱奇艺校招笔试题 数字游戏
  8. 计算机cmd如何设置路由,Windows 系统cmd设置添加静态路由方式
  9. 对抗样本生成方法论文阅读笔记
  10. 中级职称计算机excel 公式,中级职称计算机试Excel应用模拟题库.doc