c语言指针的大小
1. c语言指针变量大小的问题
对于这个你只要记住一句秘诀就好,指针的大小仅仅取决指针本身的大小,不取决于指针指向的大小。 还有就是还有一个虚拟内存和物理地址的关系,有MMU映射,8086里有硬件完成一个地址偏移的过程,物理地址 = 基址*16 + 变址。
2. c语言中,指针变量为何只占4字节
在C语言中,一般认为内存是一个大的字节数组,基本单位是字节,每一个字节包含一个地址,有多少个地址,是有CPU的地址总线位数决定的,所有的地址一般称作地址空间,比如32位的cpu,地址总线的位数是32位,它可描述的地址空间为0x0000 0000 0000 0000 ~ 2^32 - 1,正是因为此,所以在32位的系统上,一般指针占4个字节,如果是64位系统,它可描述的地址空间为0~2^64-1,如果是64位的编译器,指针占8个字节。
3. 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字节,一个整数
4. C语言中指针的长度!
记住32位下的指针 都是4个字节可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32位系统下,不管什么样的指针类型,其大小都为 4byte。
5. 在C语言中一个指针占用多少字节。
C语言规定一个指针占4个字颂段节。
查看指野清誉针所占字节数可以用sizeof(
)函数进行测试。如:
char a[] = "abcdefgh";
char *p = a; //正唤 定义一个指针变量,指向字符数组a
printf("%d\n", sizeof(p)); // 输出指针所占的字节数,输出4
6. C语言里的指针怎么比大小,都是地址到底谁大呀
本来就不存在谁大谁小,只有当指针是指向数组或字符串中元素时可以进行一些代数操作
如果是要比较指针指向的值的大小,请使用*操作符……但注意只有*p指向的数据类型可以比较才有效
此处是指向字符串的,大小就是p所指的元素(字符)在字符串中的前后顺序
7. c语言指针占几个字节
在C语言中,无论指针指向的内容是什么,指针总是占4个字节的。
8. 一个指针占用几个字节
一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。
指针是一个特殊的变量,它里面存储的数值被凳拿解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的枣晌搭内存区、指针本身所占据的内存区。
(8)c语言指针的大小扩展阅读:
使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。
指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用(reference)数据形别。许多谨睁编程语言中都支持某种形式的指针,最着名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。
9. c语言中指针占多少个字节
指针占慧冲字节数和编译器有关.
如果是16位编前渣歼译器,那么指针占2字节.
如果是32位编译器,那么指针梁辩占4字节
如果是64位编译器 那么指针占8字节.
即 指针位数和编译器位数相同.
10. 在C语言中是不是任意的同类型指针都可以比较大小,为什么
指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。
对变量a的访问有两种方式:
一是直接按地址0x065FDF4H找到a的存储单元,从而对变量a进行访问;
二是按系统为p=&a分配的地址先找到p=&a,然后根据p,&a的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。
(10)c语言指针的大小扩展阅读
访问变量,首先应找到其在内存的地址,或者说,一个地址唯一指向一个内存变量,如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量,通过指针对所指向变量的访问,也就是一种对变量的“间接访问”。
设一组指针变量pa、pb、px、py、pm、pch1、pch2,分别指向上述的变量a、b、x、y、m、ch1、ch2,指针变量也同样被存放在内存,尽管所指向的变量类型不同,但是这些指针变量所占内存空间都是2个字节,而与所指向变量的类型无关。