c语言 指针

指针是内存单元的物理地址

记地址低的数

低位存储在地址低的位置

0-2的16次方-1编指范围


地址数据    地址类型

32位4个字节

int   *a;double   *a;char   *a;

地址数据运算不同

a+1    下一个单元的首地址


 


int a 

int *p

p=&a

*p=23

int *p[ ]         //指针数组

int *p,q          //*只修饰p,不修饰q

int **p            //指向指针的指针变量


 

内存容量是2^32,即0-2^32-1是编址范围

地址数据归类于地址集合

同一个集合中数据占用内存单元的大小一致

int*    char*    double*   均为四个字节32位


&:取内存单元的地址符,单目

    参加其运算的必须是内存单元

int  a       int*p

&a          &p均选择其最小的地址

其只能进行地址类运算

int   *a;int   b;

a=&b;*a=23(*运算正数第二,a不参加赋值运算);printf("%d",b);

*+指针类运算


地址的加法运算

    +:&a+1中1是一个整形单元的长度

对于int,char,double长度不同

指针运算(单目)

    * :*p的p是指针变量,若p不是指针变量则报错

p是内存单元,存地址(指针)

*&p是正确写法

*p的结果是内存,代表一个地址


int a

int*p/char*p

*p=a

第一个是指4个字节,第二个指向1个字节

一个字节最大代表255,第二个会导致a中数值的覆盖

访问字节数从低位开始,不论越界还是缺位,只读取type类型的字节数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值