c语言基础笔记DAY5_指针基础

c语言基础笔记DAY5

1.内存
  1. 每启动一个程序,系统在内存上给该程序分配32位内存空间 4G
  2. 内存是由一个一个字节组成,每个字节都会有地址编号
  3. 32位系统,内存地址由0x 0000 0000 ~ 0xffff ffff
  4. 注意 : 这里的内存地址是逻辑地址空间,虚拟地址. 实际硬件上,虚拟地址会映射到物理内存
2.内存的编号
  1. 地址:内存的编号
  2. 我们把这个编号(地址)也叫做指针
3.指针大小
  1. 不管什么类型的指针,大小只和编译器有关(32位,64位)
  2. 32位编译器,指针大小都为四个字节
4.const指针

代码

int a = 100;
int b = 200;
const int * p = &a;  
//*p = 20;					不能通过*p修改a的值 
int * const q = &a;
q = &b;						//不能改变q的指向
const int * const x = &b;	//不能改变x指向,不能改变*x值
5.指针的加减

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6hWED9B-1606271251944)(C:\Users\zhaoq\AppData\Roaming\Typora\typora-user-images\image-20201123144330290.png)]

可转为: int * q = &a[9]

注意 : 指针相加没有意义

6.指针步长
  1. 指针步长与 指向 的类型有关
int * p = NULL;	//p的步长为:sizeof(int)
int **q = &p;	//q的步长为:sizeof(int*)
int (*x)[10];	//x为 指向元素个数为10的int型数组的指针
int *y[10];		//y为数组的名称,该数组存放了10个int型指针
int**z = y;		//z = &y[0]   z+1 = &y[1]
*(z+1) = p;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值