初识指针变量

 

1.内存

内存怎么编号的?

一个这样的内存单元是多大?

例子:对于32位数

32为--32跟地址线--物理线--电信号--1/0

电信号转换成数据信息:由1和0组成的二进制序列

00000000000000000000000000000000-32个

01111111111111111111111111111111

...

10000000000000000000000000000000

...

11111111111111111111111111111111

一共有2的32次方个组合

这些组合都可以成为内存单元的编号

这些内存单元的编号可以成为内存单元的地址

一个内存单元的大小为1bit

对于32位

2的32次方bit--(10进制)4 294 967 296bit--(/8)536 870 912Byte--(/1024)524 288Kb--(/1024)512Mb--(/1024)0.5Gb

对于最小单位

char--1byte=8bit--8个地址

最终:一个内存单元是一个字节,然后分配地址的

2指针变量

指针变量--&--指针就是地址

代码1

#include<stdio.h>

int main()

{

int a = 10;//a在内存中要分配空间的--4个字节

printf("%p\n", &a);//%p--打印地址

int*pa = &a;//pa是用来存放地址的,在C语言中叫指针变量

//*说明pa是指针变量

//int说明pa执行的对象是int类型的

char ch = 'w';

char*pc = &ch;

printf("%p\n", &ch);

return 0;

}

结果:

00A6F844

00A6F82F

如何找到a?

#include<stdio.h>

int main()

{

int a = 10;

int* pa = &a;

*pa = 20;//*pa解引操作,*pa,通过pa里边的地址,找到a

printf("%d\n", a);

return 0;

}

结果:20

指针变量的大小

代码2

#include<stdio.h>

int main()

{

printf("%d\n", sizeof(char*));

printf("%d\n", sizeof(short*));

printf("%d\n", sizeof(int*));

printf("%d\n", sizeof(long*));

printf("%d\n", sizeof(long long*));

printf("%d\n", sizeof(float*));

printf("%d\n", sizeof(double*));

return 0;

}

对于32位来说

结果:

4

4

4

4

4

4

4

对于64位来说

结果:

8

8

8

8

8

8

8

为什么结果相同?

指针是存放地址的

指针需要多大空间取决于地址的存储需要多大空间

32位--4byte

64位--8byte

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值