永发信息网

C语言指针的地址范围是多少?

答案:8  悬赏:40  手机版
解决时间 2021-11-18 19:48
  • 提问者网友:练爱
  • 2021-11-17 20:50
C语言指针的地址范围是多少?
最佳答案
  • 五星知识达人网友:狂恋
  • 2021-11-17 21:21
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
全部回答
  • 1楼网友:廢物販賣機
  • 2021-11-18 03:16
这个没有一个确定的范围。内存分配时,是根据物理内存的大小随机分配的,只要是系统空闲的内存部分,都可以分配到。*p的范围,你这里是int型,所以,他的范围就是int类型的范围,-23766-+23768
  • 2楼网友:玩世
  • 2021-11-18 01:44
你要注意sizeof(int*)的大小是4字节,所以一共32bit

是事实上在32位处理器上地址都是32bit的,运用简单的组合数学原理可知,32bit的数据(这里是指针)最多可以表示2^32 = 4294967298个地址,当然他们编址从0 ~ 4294967297

所以指针可以表示4294967298个地址,也就是最大4G的空间。。

int也是4个字节,所以分析方式和上面完全一致。。

以上
  • 3楼网友:掌灯师
  • 2021-11-18 01:25
指针变量的数据表示范围为0~机器位数个字节能表示的范围.
如32位计算机中为 0~4294967295(就是0~4GB)
*p的范围与它的指针类型有关,如:
int *p;此时*p的数据范围为: 整型的数据范围.
  • 4楼网友:笑迎怀羞
  • 2021-11-18 01:03
给你说吧:首先指针是从0开始的,但是0可不能用的。。。
在从语言中 指针 是 unsigned int 类型的。也就是从0开始的,4个字节(32位),如果是64位机器,加倍,16位机器,减少一倍。
32位的话 指针范围是 0x00000000 0xffffffff 0x后面有八个十六进制数据
实际情况上,你可以去使用的指针范围 在其中,并且 远远小于这个范围。
你比如 打印 int * p=(int*) malloc(sizeof(int)); 这个p的地址应该是 0x07开头的
比如int p,你打印&p的值,是0xb7开头的,当然这个地址是一般变量,不是指针(其实是广义上的指针,即有地址 就是广义的指针。这个不要去理会了)
  • 5楼网友:青灯有味
  • 2021-11-18 00:22
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); //返回类型为指针的函数
  • 6楼网友:胯下狙击手
  • 2021-11-17 22:46
指针只是一个标记,他只是指向一个地址
而这个地址的内容可以是任何长度
内容也可以是任何形式
假设是整形,那么取决于其长度及类型
比如某个指针指向0x00fd1a3c这个地址,在这个地址的内容可以是1个字节长,也可以是2字节,4字节,8字节,16字节等
首先其长度可以不同,其次其内容也可以不同
比如可以是字符串 abcdef\0
或 0x6162636465666700

指针这个概念相对较难理解
你可以认为是一个书签,你要看书,首先找到书签以后翻到那个页码,然后看那一页上写的内容
  • 7楼网友:零点过十分
  • 2021-11-17 22:04
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯