栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 addressn");

printf("%Xn",p1);

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

printf("the value isn");

printf("%dn",(int*)p1);

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

printf("the char pointer of value isn");

printf("%cn",(char*)p1);


 

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

printf("pointer Byten");

printf("%dn",sizeof(p1));

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

printf("int pointer Byten");

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

return 0;

//

}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号