野指针,数组指针,指针数组
目录:
- 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时,指针数组改变了一个类型的大小,数组指针改变了一个数组的大小
野指针,数组指针,指针数组相关推荐
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
- c/c++教程 - 1.9 指针 空指针 野指针 const修饰指针 指针常量 常量指针 指针和数组 指针和函数
十一.指针 (1)指针的定义和使用 指针的作用:可以通过指针间接访问内存. 参考视频:https://www.bilibili.com/video/BV1et411b73Z?from=search&a ...
- 释放内存触发断点及数组、指针的NULL初始化
Visual Studio调试时,出现"触发一个断点"内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 char Outi[4] = { NULL }; ...
- 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...
- 二级(多级)指针,二级指针和二维数组的避坑,指针面试考题
1.二级指针的的认识 2.二级指针的实战 想获得二维数组的某个人的位置,采用的是return的方式 如果把第三行的int * 换成void ,把ppos换成传参的方式做. 结果崩溃了 原因是 是个野指 ...
- C语言再学习 -- 再论数组和指针
之前有总结指针数组,但是现在看来总结的太简单了.好多重要的知识点都是一带而过的.本想在后面添加后来想想算了,还是再写一篇文章来详细介绍数组和指针这对冤家吧. 之前总结的,参看:C语言再学习 -- 数组 ...
- C语言中的二级指针和二维数组问题
关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组 首先来看看二维数组在内存中是如何组织的呢? 一维数组 T arr1 = new T[9] 二维数组T arr2 = new T[ ...
- 出参传递数组指针_C语言指针重难点详解
1为什么使用指针 假如我们定义了 char a='A' ,当需要使用 'A' 时,除了直接调用变量 a ,还可以定义 char *p=&a ,调用 a 的地址,即指向 a 的指针 p ,变量 ...
- C语言指针变量与一维数组
数组元素之间的地址是相连的: 变量地址绝对不是相连的,如果找到规律那也只是一个偶然的,不是必然的: 1. 指针变量和一位数组 下面对指针数组进行分析,index(小标是从0开始),array数组是in ...
- Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...
最新文章
- “西南偏南” 三十年首次 “聚焦中国”
- 在IIS7上导出所有应用程序池的方法批量域名绑定(网站绑定)
- mysql 结构对比工具_Mysql 数据库结构 对比工具
- linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
- 通过iframe引入另外一个项目中的html片段到项目中,解决样式,高度,兼容等问题的策略
- 1. Spring boot 之热部署
- python缩进说法_【多选题】关于Python程序中与“缩进”有关的说法中,以下选项中错误的是()。...
- IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
- 执行效率太低又怎样? Python 照样火过 Java、C/ C++
- Flask源码解析:从第一个版本开始阅读Flask源码
- angularjs 学习笔记(一) -----JSONP跨站访问
- 微信小程序组件slider
- 「专题训练」Collecting Bugs(POJ-2096)
- 认识三大方便的开源 Linux 防火墙生成器
- android自带下拉阻尼动画,Android 自带阻尼效果的ScrollView,仿ios效果
- 口袋妖怪lets go服务器维护中,口袋妖怪lets go攻略 口袋妖怪lets go新手攻略(中)...
- 计算机毕业设计asp.net会员积分兑换系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
- Bypass 360主机卫士SQL注入防御(多姿势)
- 非关系型数据库之Redis【redis安装】
- 【Java Web基础】(十一)Ajax示例:根据用户输入的学号填充用户信息
热门文章
- 苏宁易购开放平台_前三季度线上规模突破2000亿,苏宁易购三季度盈利7.14亿
- 开发者道路上的季度考核及360环评----------囚徒困境
- Google Earth Engine(GEE)——GEE版本的全球森林火灾信息获取并呈现2001-2020年四川省火灾亮度时间序列分析
- python从文件中读数据并进行排序
- 计算机毕业设计php+vue基于微信小程序的音乐云系统-音乐播放系统
- 需求评审会议如何召开
- 爱奇艺校招笔试题 数字游戏
- 计算机cmd如何设置路由,Windows 系统cmd设置添加静态路由方式
- 对抗样本生成方法论文阅读笔记
- 中级职称计算机excel 公式,中级职称计算机试Excel应用模拟题库.doc