一个int型变量占用4字节,那他的二进制地址是多长?

问题描述

一个int型变量占用4字节,那他的二进制地址是多长?

一个存储单元的地址不是16位吗?我弄不懂啊~~~~求指教指教

解决方案

比如说,你定义了一个变量a,int a;那么内存中会为你分配4个字节大小的空间来存放a,int变量占用4个字节指的就是存放这个变量的值的内存空间大小为4个字节。
而二进制地址的话指的是内存中会为a存一份指针,当你要使用a的时候,就会通过这个指针去找内存中a的值,假如把a比作房间的话,那么指针就是门牌号。而这个指针(其实里面存放的就是二进制地址)的长度的话是不定的,会和你的系统的位数相对应,一般来说如果你是32位的机器,那么就是32位,如果是16位的话那么就是16位。
你可以输出 sizeof(int *)的值来验证一下。
地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。

解决方案二:

变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。在C语言中,每一个存储单元占一个字节,每一个字节对应一个地址,这个地址即为内存地址。定义int a;时,编译器分配4个字节内存,并命名该4个字节的空间名字为a(即变量名),当用到变量名a时,就是在使用那4个字节的内存空间.

解决方案三:

http://blog.csdn.net/cqupt_chen/article/details/8056023
http://very1024.blog.51cto.com/3588520/1215674
https://www.quora.com/Why-it-is-that-1-Byte-is-equal-to-8-Bits

Historically, the byte was the number of bits used to encode a single character of text in a computer[1][2] and for this reason it is the smallest addressable unit of memory in many computer architectures. The size of the byte has historically been hardware dependent and no definitive standards existed that mandated the size. The de facto standard of eight bits is a convenient power of two permitting the values 0 through 255 for one byte

The C standard requires that the char integral data type is  capable of holding at least 256 different values, and is represented by  at least 8 bits (clause 5.2.4.2.1). Various implementations of C and  C++ reserve 8, 9, 16, 32, or 36 bits for the storage of a byte.[10][11] The actual number of bits in a particular implementation is documented as CHAR_BIT as implemented in the limits.h file.

解决方案四:

地址,也就是指针,一般来说是 4 个字节。
无论这 4 个字节指向哪里?指向一个字节、两个字节,或者多个字节都是一样的。

时间: 2024-09-19 08:54:05

一个int型变量占用4字节,那他的二进制地址是多长?的相关文章

用32位int型变量表示单引号括起来的四个字符的深入探讨_C 语言

在C.C++中可以用32位int型变量表示单引号括起来的四个字符,例如下面代码中的示例: 复制代码 代码如下:  // 字符c的16进制值是0x63,字符o的16进制值是0x6f, // 字符n的16进制值是0x6e int what = 'conn'; printf("The address of what is 0x%x \n", &what); printf("what 0x%x \n", what); if (what == 0x636f6e6e)

c++-C++写int型变量到二进制文件中

问题描述 C++写int型变量到二进制文件中 我的int型变量inst十进制是270400,就是十六进制的00042040,然后我用以下代码把它写入文件中 fout.write((char *)(&inst), sizeof(inst)); 用sublime打开文件后,输出之后不是预期的00042040,而是40200400...感觉是大小端的问题,这怎么解决? 解决方案 你先格式成字符串,写入的时以字符串写入试试: 解决方案二: 270400内存中确实是存成40200400的(我们的PC一般都

请教:如何用类名的字符串强制转化一个Object型变量

问题描述 具体说明:假设有个类名的字符串StringclassName="Abcd";一个Object型变量Objecta;如何让程序用className把a强制转换成Abcd类型?最终效果等同于(Abcd)a;请教各位大神,谢谢. 解决方案 本帖最后由 longyentian 于 2015-01-02 17:18:15 编辑解决方案二:顶一下.找牛人回答

java-如何从键盘输入一个字符,赋给一个char型变量

问题描述 如何从键盘输入一个字符,赋给一个char型变量 这是老师的附加题,java里的求解求解求解求解求解求解求解求解求解 解决方案 方法一:从控制台接收一个字符,然后将其打印出来 public static void main(String [] args) throws IOException{ System.out.print("Enter a Char:"); char i = (char) System.in.read(); System.out.println("

C语言中交换int型变量的值及转换为字符数组的方法_C 语言

不使用其他变量交换两个整型的值: #include <stdio.h> void main(){ int a = 3; int b = 4; a = a ^ b;//使用异或交换 b = b ^ a; a = a ^ b; printf("%d, %d\n", a, b); a = a - b;//使用加减交换 b = a + b; a = b - a; printf("%d, %d\n", a, b); a ^= b ^= a ^= b; printf

c语言-int型指针转成short型指针 然后自加一 地址移动四位?

问题描述 int型指针转成short型指针 然后自加一 地址移动四位? 一个int型指针强制转换成short型 然后自加一 为什么地址还是移动四个字节 而不是两个字节? 想不明白 解决方案 不同的编译器不同.一些编译器,为了优化处理器对内存的访问,所有的变量按照4字节对齐. 我这里是2http://codepad.org/lNNoQMVC #include <stdio.h> int main() { int * ptr = 0; short * sptr = ((short *)ptr +

c语言-C 中将一个int型数赋值给char型数组的前4字节,数组后面仍为char型

问题描述 C 中将一个int型数赋值给char型数组的前4字节,数组后面仍为char型 C 中将一个int型数赋值给char型数组的前4字节,数组后面仍为char型 解决方案 最简单的是使用联合 union X { int val; char[100]; } X.val=1; http://blog.csdn.net/jiangnanyouzi/article/details/3158702 解决方案二: http://www.jb51.net/article/56009.htmhttp://v

new-问一个关于C#将接收的字节数据赋值给变量的问题

问题描述 问一个关于C#将接收的字节数据赋值给变量的问题 前面接收数据步骤是这样的 int lenth = serialPort1.BytesToRead; Byte[] BYTE = new Byte[lenth]; serialPort1.Read(BYTE, 0, lenth); 这里定义5个具体变量:byte A,B,C,D,E 现在要求是接收5次数据,第一次把收到的byte赋值给A,第二次赋值给B...第五次赋值给E. 以此类推.第六次循环在次赋值给A,B,C,D,E以此类推 以前习惯

串口接受的十六进制数据如何赋值给int型的变量呢

问题描述 串口接受的十六进制数据如何赋值给int型的变量呢 我定义一个int变量 int h=0:接受的一个串口数据为WPARAM ch,我想把这个ch赋值给h,h=(int)ch:这样为什么不可以呢,也就是我想要把接受到的00变为int型的0,01变为1 应该怎么转换呢 解决方案 你用的什么编译器?我用vc2010编译可以通过. 解决方案二: 我也觉得可以,你输出下wparam,是不是没有获取到值 解决方案三: 试试sprintf()函数 解决方案四: 通过串口,你最好先将数字转成字符串,如