C语言指针的地址范围是多少?
比如我定义了一个指针变量int*p;(是两个字节整型)一般用法p=&addr那这个&addr的范围是多少啊,是0到65535吗那*p的内容的范围又是多少呢,也是0到655...
比如我定义了一个指针变量int *p;(是两个字节整型)
一般用法 p=&addr
那这个&addr的范围是多少啊,是0到65535吗
那*p的内容的范围又是多少呢,也是0到65535吗 展开
一般用法 p=&addr
那这个&addr的范围是多少啊,是0到65535吗
那*p的内容的范围又是多少呢,也是0到65535吗 展开
11个回答
展开全部
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
展开全部
1、变量的地址用&运算符获取。
int a;
float b;
int *pa; float *pb;
pa = &a, pb = &b; //这里用&获取,或者说&表达式即是一个变量地址。
2、变量的地址,实际上是一个无符号整数类型。
int a = 2;
float b = 3;
if ((unsigned)&a > (unsigned) &b)
printf("变量a的地址大于变量b的地址\n");
3、指针也是一个变量,也具备地址。
int a = 2;
int *pa = &a;
int **ppa = &pa; //ppa保存的是指针的地址
4、其它常用的指针形式
int *pa[2]; //指针数组,有指针变量组成的数组
int a[2][2] = {1,2,3,4};
int (*pa)[2] = a; //数组指针,指向具备2个整型元素的数组。
void hello() { ; }
void (*pfunc)(void); //函数指针
void *getaddr(int var_addr); //返回类型为指针的函数
int a;
float b;
int *pa; float *pb;
pa = &a, pb = &b; //这里用&获取,或者说&表达式即是一个变量地址。
2、变量的地址,实际上是一个无符号整数类型。
int a = 2;
float b = 3;
if ((unsigned)&a > (unsigned) &b)
printf("变量a的地址大于变量b的地址\n");
3、指针也是一个变量,也具备地址。
int a = 2;
int *pa = &a;
int **ppa = &pa; //ppa保存的是指针的地址
4、其它常用的指针形式
int *pa[2]; //指针数组,有指针变量组成的数组
int a[2][2] = {1,2,3,4};
int (*pa)[2] = a; //数组指针,指向具备2个整型元素的数组。
void hello() { ; }
void (*pfunc)(void); //函数指针
void *getaddr(int var_addr); //返回类型为指针的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针变量的数据表示范围为0~机器位数个字节能表示的范围.
如32位计算机中为 0~4294967295(就是0~4GB)
*p的范围与它的指针类型有关,如:
int *p;此时*p的数据范围为: 整型的数据范围.
如32位计算机中为 0~4294967295(就是0~4GB)
*p的范围与它的指针类型有关,如:
int *p;此时*p的数据范围为: 整型的数据范围.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要注意sizeof(int*)的大小是4字节,所以一共32bit
是事实上在32位处理器上地址都是32bit的,运用简单的组合数学原理可知,32bit的数据(这里是指针)最多可以表示2^32 = 4294967298个地址,当然他们编址从0 ~ 4294967297
所以指针可以表示4294967298个地址,也就是最大4G的空间。。
int也是4个字节,所以分析方式和上面完全一致。。
以上
是事实上在32位处理器上地址都是32bit的,运用简单的组合数学原理可知,32bit的数据(这里是指针)最多可以表示2^32 = 4294967298个地址,当然他们编址从0 ~ 4294967297
所以指针可以表示4294967298个地址,也就是最大4G的空间。。
int也是4个字节,所以分析方式和上面完全一致。。
以上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |