1. 在c语言中一个指针占用多少字节。
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。
(1)c语言指针对象大小扩展阅读:
1)指针的含义
指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),所以不同类型的指针长度都一样比如说一个char1字节,可以存在0x0,也可以位于0xFFFFFFFF,比如你的32位系统。
2)指针的范围
指针长度为4,在64位操作系统下那么就都是8了,而和char占用1字节还是100字节无关,指针的范围只和机器字和系统有关。
3)变化的范围
如果你输出的是444,说明指针长度为4字节可以记录的地址范围是0x00000000~0xFFFFFFFF,这个范围才是指针变量的值。
4)指针的介绍
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
2. c语言关于指针比大小的问题,求解析
输入2,3
输入为:max=2,
min=3
注意:
swap(int
*p1,int
*p2){
int
*temp;
temp
=
p1;
p1
=
p2;
p2
=
temp;
}
函数参数p1,p2是形参(恰巧与main中的p1,
p2同名),swap只交换了参数p1,
p2的值,而没有改变main中两个变量p1,
p2!!
3. C语言指针变量大小的问题
对于这个你只要记住一句秘诀就好,指针的大小仅仅取决指针本身的大小,不取决于指针指向的大小。 还有就是还有一个虚拟内存和物理地址的关系,有MMU映射,8086里有硬件完成一个地址偏移的过程,物理地址 = 基址*16 + 变址。
4. c语言中指针占多少个字节
指针占字节数和编译器有关.
如果是16位编译器,那么指针占2字节.
如果是32位编译器,那么指针占4字节
如果是64位编译器 那么指针占8字节.
即 指针位数和编译器位数相同.
5. C语言的指针变量在内存中占多少字节
一个指针变量在内存中占两个字节(small模式编译)
一个指针变量在内存中占四个字节(32位机器上)
一般都是32位机器的,所以四个字节咯。
6. C语言 如何输出指针所指向空间的大小
C语言无法输出指针所指向的空间的大小!
一般,我们获取一个变量所占内存空间的方法为:sizeof(变量名或类型名),如:
inta;
intaa[10];
int*p=aa;
printf("sizeof(int)=%d ",sizeof(int));//现在的机器一般为32位或64位机,int类型占四个字节,所以输出4
printf("sizeof(a)=%d ",sizeof(a));//输出4
printf("sizeof(aa)=%d ",sizeof(aa));//输出4*10=40
printf("sizeof(p)=%d ",sizeof(p));//输出4?见下面说明
printf("sizeof(int*)=%d ",sizeof(int*));//输出4?见下面说明
指针变量定义:用来存储内存地址的变量。指针变量中存储的是内存地址数据(一个整型数),而不是真正的数据,真正的数据是在地址中存放的。所以,指针变量实际上就是个整型变量,用sizeof命令去获取任意类型的指针变量都会得到4。
指针变量存储的是一个存储空间的首地址,究竟这个空间有多大,可以存储多少个数据,这是分配空间时所决定的。单独看一个地址值,是看不出其空间大小的。如:
int a;
int aa[10];
int *p ; //定义一个指针变量
p=aa ; //指向数组aa,aa的数据空间是40字节,10个整数
p=&a; //指向一个整型变量,它的存储空间是4字节,一个整数
7. C语言中,一个指针占用的空间是多大和指针类型有关系吗
指针和其指向的数据类型有关系,你可以用sizeof()来做测试:
printf("the
size
of
char
is
%d\n",sizeof(int*));
printf("the
size
of
char
is
%d\n",sizeof(char*));
另外,指向结构体的指针就要看具体情况了,C语言还有所谓的“对齐机制”,就是结构体里的单元,所分配的空间实际上要参照结构体里“体积”最大的那个单元。就是说,比如一个char和一个int,char要向int看齐,一个char和一个double,char要向double看齐。关键就在于凑整数,凑成最大变量大小的倍数。当然,如果结构体里只有char型的变量或是数组,就不存在一定要凑数的问题了。
8. C语言中指针的长度!
记住32位下的指针 都是4个字节可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32位系统下,不管什么样的指针类型,其大小都为 4byte。
9. 【C语言】如何获取含有指针的结构体的总大小
虽然你定义了结构体,但是不会为结构体的定义分配内存的,分配内存的是结构体的对象,或者说实例,因此,你能知道的是如果申明使用这个结构体会分配多少内存,只需要声明一个对象,然后再查看这个对象的大小就能打到你的目的了:siziof(struct xx), xx就是你定义的结构体的一个对象
10. C语言里的指针怎么比大小,都是地址到底谁大呀
本来就不存在谁大谁小,只有当指针是指向数组或字符串中元素时可以进行一些代数操作
如果是要比较指针指向的值的大小,请使用*操作符……但注意只有*p指向的数据类型可以比较才有效
此处是指向字符串的,大小就是p所指的元素(字符)在字符串中的前后顺序