C/C++学习笔记四(指针、数组)

指针

什么是指针?

指针其实是内存单元地址

什么是指针变量

指针变量是用于存储内存单元地址的变量

指针变量存储的实质

顾名思义,指针变量存储的是内存单元的值,即存储的值其实指向的一个特定类型内存区域的起始地址。
如下例子,整型变量a的值为123,其内存单元地址为0x104,指针变量存储的值是变量a的内存单元0x104。
指针变量指向了内存地址起始为0x104,长度为4个字节的内存单元。p也可以对这个4个单元进行操作。

int a = 123;
int *p = &a;

这里写图片描述

指针变量的运算

c语言中,我们可以像普通整型数据一样,对指针变量进行运算。

指针变量的转换

普通类型的指针变量都可以直接赋值void *空类型指针,
但空类型指针需要强转才可以转成普通类型指针。

void 指针是一种特殊的指针,表示“无类型的指针”,因为其没有指定类型,所有它可以指向任何类型的数据,也就是说任何类型的指针可以直接复制给void指针。

void * vp;
int * ip;
...
vp = ip;

但是void指针赋值给其他类型的指针时,必须强制转换

void *vp;
int * ip;
...
ip = (void *)vp;

这是因为指定了类型的指针变量指向了内存的一块区域,但空类型指针无法确定指向内存区域的大小。

需要注意的是,不同类型指针变量相互转换时,需避免访问非法的内存区域,导致程序异常退出。
如下例子,chP指向了一段长度为1字节的变量a的内存区域,当其强制转换成int指针时,则超出了编译器分配的内存区域,程序会异常退出。

    char  a = 'a';
    char * chP = &a;
    int * iP = (int *)chP;
    *iP = 123;
指针变量的算术运算

指针变量可以使用算术运算符实现自增减,如下例

    int a = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值