指针和指针类型

一    指针和指针变量

指针是内存中最小单元的编号,也叫地址(口语中的指针通常指的是指针变量),地址就像访问数据的门牌号,指向内存单元,其中最小单元为一个字节(即一个字节一个地址)。通过地址可以找到存储的数据。指针变量是用来存放地址,其大小可以是4个字节或者8个字节。

二    指针类型

int*指针指向int类型 

short* 指针指向short

long*指针指向long

float*指针指向float

char*指针指向char

.....................................  

例如a的数据类型是整形所以用int*类型的指针变量p中存放a的地址

p中为a的地址若对a的值进行修改,用'*'字符解引用*p就指向a,即对a进行赋值。

 野指针:如果该指针没有被正确初始化或已被释放,就可能导致函数内部出现野指针。野指针可能会导致程序崩溃或产生未知行为。

野指针:指针指向位置不可知

成因:

指针没有进行初始化(指针指向未知位置)

例如

int* p ;

*p=10;//此时p的位置未知

如何避免:

我们应将其进初始化     int*p=&a;或者让其等于一空指针int*p=NULL;

函数调用中可能存在野指针(指针指向内存被释放)

例如: 


int test()
{
    int a = 10;
    return &a;
}
int main()
{
    int* p =test();
    printf("hehe\n");
    printf("%d", *p);
    return 0;

 函数返还一个地址,指针已被释放,指针指向的内存部分被覆盖,导致出现野指针,不安全。

三     指针类型的意义

指针类型决定了解引用时访问几个字符;int*类型解引用时访问4个字节一个整形,char解引用时访问的字节数为1.......

指针类型决定了当指针变量+1/-1时跳过几个字节;

一些数据类型虽然字节数一致但是不能通用,不同类型解引用时访问的是各自类型的数据;例如float和int同为4个字节但float类型指针解引用是访问浮点型数据,int指针访问整形数据。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值