① c语言中指针占多少个字节
指针占慧冲字节数和编译器有关.
如果是16位编前渣歼译器,那么指针占2字节.
如果是32位编译器,那么指针梁辩占4字节
如果是64位编译器 那么指针占8字节.
即 指针位数和编译器位数相同.
② c语言中如何给指针赋32位地址
int *P;
P=(int *)0xf000;
你定义的p就是指向int型数据的,所以编译器不提示错误或判信息
char *p=NULL;
p=(long *)0xf0000;
此时你定义的p是指向char型的,而你又让他指向long型的
编译衫念改器显示:error C2440: '=' : cannot convert from 'long *' to 'char *'
也就是认为你赋值错误
有什么必要对指针这样直接进行物理地址高旅的赋值吗?
如果这个物理地址直接指向关键内存区,可能导致系统的崩溃
建议不要这样使用
③ C语言里指针指不论指向任何变量它自身都只占4个字节为什么
对啊
指针是存放地址用滴。。
打个比方,你要寄一封信,得写邮政编码吧。。
现在咱中国都用6个数字来代表一个闭源隐县。。
好嘞,明白了吧,你声明一个指针的过程就相当于要一个信封,让指针指向变量的过程就像在信封上写上邮编。。让它来指向一个县。
至于你轿厅问为啥指针总占4个字节,就相当于在问我国邮政编码怎么是6位啊。。
因为是特么国家规定的。。无论你的邮编指向哪个县(对应指针指裂液向变量),信封上的6个框框总不会变把。,
④ 32位和64位系统中为什么指针都是4个字节的长度
32位和64位系统中,编译器为了相互兼睁此容枯察,所以指针都是4个字节长度。
字节(Byte /t/ n. [C])是没早茄计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
⑤ 32位编译器上 char *str1 = “Hello”,str2[]=”Hello”;
字符串指针型变量的实质是指针早氏答,而不是字符型变量,和是不是首地址无关。所以sizeof的结果就是指针陆慧变量的大小,在32位上是4字节,在64位上是8字节。
如果想知道字符串的核搭大小,可以采用strlen函数。
⑥ 指针的大小到底是由谁决定是多少
指针大小和机器字长相同,即32位机指针长脊渣度为4字节。
使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。
一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。
(6)编译器32位指针扩展阅读:
对指针进行初始化或赋值只能使用以下几种类型的值:0 值常量表达式,例如,在编译时可获得 0 值的整型 const对象或字面值常量 0。类型匹配的对象的地址。另一对象末的下一地址。同类型的另一个有效指针。
增加节点操作,往往考虑到删除根节点,增加咐瞎的节点取代樱简悄原来的根节点作为新根节点的情况。为了修改根节点这个“整数”,我们需要退一步,使用这个“整数”的内存地址。
⑦ c语言指针的疑问
1、通常一个指针,全部32位都用来表示地址了;编译器在编译过程中会为变量建立相关表格,保存有变量类型的信息;执行时候CPU是不管它是什么类型的
2、和变量类型有关;静态数据初始化为0;局部变量不确定。
3、b 本信核身的地址 和 b 这个指针变量保存的地址不是一个概念。举例来说,b是一个容器,它有自己的存放位置,容器里面存放的是伍高a的位置。滑橘掘