C++野指针,c语言指针用法详解,C语言指针详解之野指针

C++野指针,c语言指针用法详解,C语言指针详解之野指针

本文主要介绍了C语言的通配符指针,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

目录

指针是什么?怎么会?什么是指针变量?指针类型是什么?指针类型存在的意义是什么?野指针出现的原因1。指针未初始化2。指针越界如何避免野指针(野狗)的出现?指针操作摘要

指针是什么?

指针只是一个名词。指针是一个地址。

当我们说指针时,我们也可以指指针变量。

怎么表示?

名称指针变量=地址;

例如:int * pa=a;

//我们这里的指针类型叫做int*,我读作(尹特星号)。

//pa是指针变量。

这个表达式的意思是:定义了一个指针变量pa,存放a .的地址,这个指针变量的类型是int*。

然后有些同学就迷茫了。什么是指针变量?

什么是指针变量?

很简单。我们之前学过如何定义整型变量A。

例如,定义a 《整型》 《变量a》,然后将a初始化为10。

int a=10

但是现在变了。我们现在已经学会了指针。

可以定义一个《int*》 《变量pa》,然后第一次把pa改成A。

注意:

Int*是一种类型。这叫指针型

Pa称为指针变量。

int * pa=a;

指针类型又是什么?

因为变量有不同的类型,比如整型,浮点型等等。

还有不同类型的指针。

char * pc=NULL

int * pi=NULL

short * ps=NULL

long * pl=NULL

float * pf=NULL

double * pd=NULL//NULL是空指针。

如你所见,指针被定义为:type *。

实际上:

char*类型的指针用于存储char类型变量的地址。

short*类型的指针用于存储short类型变量的地址。

int*类型的指针用于存储int类型变量的地址。

指针类型存在的意义

指针的类型那么多,指针类型的意义是什么?

让我们从两个重要的结论开始:

指针的类型决定了指针向前或向后移动(即地址1)的长度(可以移动多少字节)。

指针的类型决定了你在解引用一个指针的时候有多少权限(可以操作几个字节)。

比如char*(即地址加一)的指针1只能跳过一个字节,int*(地址1)的指针1可以跳过四个字节。

因为char类型占用内存1个字节,int类型占用内存4个字节。

比如char*的指针解引用只能访问一个字节,而int*的指针解引用可以访问四个字节。

不会说话,我们来看下面这个例子。

int main()

{

int n=10//定义整数变量n,初始化为10

char * PC=(char *)n;//定义字符型指针变量pc,并将其初始化为n的地址。

int * pi=n;//定义整数指针变量pi,初始化到n的地址。

printf('%p\n ',n);

printf('%p\n ',PC);

printf('%p\n ',pc1);

printf('%p\n ',pi);

printf('%p\n ',pi 1);

返回0;

}

打印结果如下,是十六进制数。可以看出,字符型的指针变量pc加1,只能操作一个字节,所以从4 ^ 1变为5。整数变量pi 1跳过4个字节,变成8。

综上所述,这就是指针类型的意义。

野指针是什么?

有些人听到百搭指针可能会好奇这个名词是什么意思。

不用担心,野指针很好理解。

当一只狗被描述为野生的时候,可以理解为野狗经常占据别人的领地或者随意出现在任何地方。

所以野指针的意思是一样的。

通配符指针是一种总是占用他人内存(地址)的指针。或者随机出现一个地址。

野指针产生的原因

一、 指针未初始化

int main()

{

int * p;//局部变量指针未初始化,默认值为random。

* p=20

返回0;}

二、 指针越界访问

#包含stdio.h

int main()

{

int arr[10]={ 0 };

int * p=arr

int I=0;

for(I=0;i=11我)

{

//当指针指向的范围超出数组arr的范围时,P为通配符指针

*(p)=I;

}

返回0;}

如何避免野指针(野狗)的出现呢?

初始化指针(就是把野狗拴在一个地方,防止它随便占别人的地盘)

注意越过线的指针(绑住流浪狗,以免挣脱绳子)

指针运算

减去指针以获得两个指针之间的元素数。

摘要

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: