c语言什么是指针,指针字节大小,指针所指向的值,一个指针多少位,指针的寻址范围

// 为了可以方便研究,我在这个定义了一个void *p1指针来进行讨论。

//什么是指针,操作系统给程序分配一个内存管理工具,叫做指针,在现代操作系统中,每一块数据内存空间(比如int,double,char......)都会有一个对应的地址,指针负责对内存地址的值进行,读,写,操作。


 

#include"stdio.h"

int main()

{

// 定义一个空指针,在运行这个程序的时候,操作系统会自动的给它分配64bit内存空间

// 因为我的是64位的操作系统,所以,在我的程序中,我的一个指针是64bit

void *p1;


 

// 所以一个指针的大小从

// :0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000:计算指针结果:0

// :0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001:计算指针结果:1

// 到

// :1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1110:计算指针结果:FFFFFFFFFFFFFFFE

// :1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111:计算指针结果:FFFFFFFFFFFFFFFF

// 以上就是一个64位操作系统的地址大小,也就是一个指针的寻址能力。

// 也就是说,一个指针对应一个数据内存空间,数据类型的空间大小,取决于一个指针的类型

// 比如一个指针:int *p;

// 指针*p指向一个32bit大小的数据空间(指向int数据类型的指针)

// 比如指针:char *p2

// 指针*p2指向一个8bit大小的数据空间(指向char数据类型的指针)

// 本次定义的一个指针只是单纯的一个指针,没有划分固定的数据内存大小,操作系统只是在内存中划分64bit的一个指针

// 指针void *p1的值可能是其他程序留下的。

// 查看操作系统分配给p1的指针的值

printf("start print the point address\n");

printf("%X\n",p1);

// 把p1指针的指向int的值给输出来看一下。也就是从这个p1的值的指向的地址开始,往后面数32个bit,也就是这地址指向的值。

printf("the value is\n");

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

//把p1指针的指向char的值给输出来看一下。也就是从这个p1的值的指向的地址开始,往后面数8bit,也就是这地址指向值。

printf("the char pointer of value is\n");

printf("%c\n",(char*)p1);


 

// 查看64位操作系统的指针大小

printf("pointer Byte\n");

printf("%d\n",sizeof(p1));

// 指针变量的bit大小不会随着变量内型的改变而改变,只会随着系统的位数改变。所以结果都是64bit,8Byte

printf("int pointer Byte\n");

printf("%d %d %d %d",sizeof(int*),sizeof(char*),sizeof(float*),sizeof(double*));

return 0;

//

}

//如果以上内容有错误的地方,欢迎大家批评一下,谢谢各位~~。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值