77问答网
所有问题
C语言的存储单元问题
问题一:怎样让,定义的全局变量的地址连续?能够举个例吗?
问题二:能够这样定义吗?
unsigned char a,b,c,d,e;
unsigned char Tab[]={a,b,c,d,e}
举报该问题
推荐答案 2011-10-11
让全局变量拥有连续的地址有两种方法:
1. 定义数组,比如 unsigned char a[100];
这样就定义了一个长度为100的类型为unsigned char的数组,相当于100个unsigned char 类型的全局变量,他们的地址是连续的:第一个地址为a,第二个为a+1,……
2. 全局作用域中定义一个指针,然后在主函数main中为其动态分配内存,比如全局作用域中定义unsigned char *p,主函数中动态分配内存语句如下:
p=(unsigned char*)malloc( 100 * sizeof(unsigned char));
意义就是分配100个unsigned char 类型变量所占据的连续内存,使p指针指向该段内存的首地址。
我们并没有办法让不同类型的变量具有连续的地址,除非定义结构体,然后使用结构体类型定义全局变量。结构体定义如下:
struct S_Type{
int a;
double c;
};
struct S_Type s_var;
这时候s_var结构中有两个Field(其实也可以称为变量),其地址是连续的。
不过,该地址连续仅仅是指应用程序层次的地址连续。操作系统不一定会把该段地址空间映射到连续的物理内存地址上。然而,应用程序并不用关心物理内存地址。
还有一点,全局变量要么不初始化,要么必须用常量或者常量表达式初始化。
int a=100;
int b=a;
这么定义全局变量并初始化是不对的。尽管编译器可以知道a的值是100,但是它并不会去推断。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/8Yp3WIIpv.html
其他回答
第1个回答 2011-10-11
1. 有什么意义呢?如果执意追求这一点,可以将需要连续分配的全局变量组合起来声明为一个结构体。
2. 不可以。
第2个回答 2011-10-11
用数组表示就可以了,或者动态分配 type *p = (type *)malloc(sizeof(type)); p[i]就可以引用。至于不同类型我就不知道了,因为不清楚标准里结构体是否为连续存储,不过一般的实现都是连续存储结构的。
相似回答
C语言问题
:一个两字节
的存储单元
所存的最小整数
答:
对于所有整数在内存中都是以整数的补码形式存在,2个字节是2*8=16位,而位是用0或1表示的,自己画16个空格,如果是最大正整数的话,开头第一位必须是符号位0,然后后面的15位都是1,所以表示的最大十进制整数是32767,如果是最小负整数的话,开头第一位必须是符号位1,另外要记住这样一个关系原...
c语言中的
变量是如何分配字节的?
答:
BUFDW10HDUP(3DUP(2,10H),3,5)上述汇编后,为变量BUF分配
的存储单元
字节数是100H。DW为2字节;10H转化为10进制就为16。先算里面的循环,2和10h循环3次是6,再+3和5,就是8,一共要循环10h次,就是16次,就是128,再加上是dw占一个字,所以字节数是256十进制的256换成16进制就是...
...10]采用行序为主方式存储,每个元素占2个
存储单元
……
答:
数组A[N][M],A[0][0]是数组中地址最小的元素。如果A[0][0]存放地址为n,那么A[i][j]存放的地址就是 n+i*M*sizeof(T)+j*sizeof(T) ,sizeof(T)是每个元素所占
的存储单元
。故可以知道A[18][9]的存储地址是 1000+(18-10)*10*2+(9-5)*2=1168;...
关于
存储单元的问题
答:
1.编译的过程是编译器对程序的一个压栈操作,虽然只产生了一个可执行文件,其实内存已经为变量分配了空间
,这个问题你可以通过数据结构的学习来更清晰的了解。2.这里的2000是不存在的,也就是说没有一个内存的物理地址叫2000,只不过是个标示,2000是代表物理内存中某个存储单元的物理地址而已,仅仅是...
c语言中存储单元
的地址和存储单元的内容有什么区别?
答:
存储单元
的地址是一个指针类型的。\x0d\x0a而存储单元的类型是数据的具体类型。\x0d\x0a举个例子吧。\x0d\x0a定义一个整型变量int a = 1;\x0d\x0a那么存储单元的地址是&a,可以赋值给一个指向整型的指针:\x0d\x0aint *p = &a;\x0d\x0a而存储单元的值是数值1,如果是四个...
在
C语言中
,只有在使用时才占用内存
单元
的变量,其
存储
类型是( )。_百度...
答:
【答案】:A 本题的考查点是变量
的存储
类型。extern、register、static、auto分别是定义自动变量、寄存器变量、静态变量、外部变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配
单元
;而静态变量和外部变量属于静态存储,在整个程序运行时间都存在。
c语言
变量如何
存储
在内存
中
?
答:
C语言
: char i = 10;要经过编译,生成机器码,再由 CPU 执行。i 这个变量,占用一个
存储单元
。。i 是无符号数,其内容是:0000 1010。int j = -128;j 是整型,占用两个存储单元。j 是有符号数,将以补码存放:1111 1111 1000 0000。去看看《计算机原理》、《汇编语言》吧。其实,学...
大家正在搜
c语言中的文件的存储方式有
关于c语言提问的问题
C语言的存储类型有哪些
关于C语言的问题
c语言中的存储类型
c语言中数据的存储形式
c语言的变量存储类型有
c语言变量的存储类型有哪些
c语言存储变量的查找
相关问题
C语言中存储单元与位有什么不同吗?
c语言的形参是否占存储单元
在c语言中静态存储单元与动态存储单元有什么区别
c语言问题: 1.已知int a[10];占用内存(? )个...
C语言中变量值在存储单元中占用多大空间与什么有关?
在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(...
C语言问题 变量的本质是代表内存中一个存储单元的地址 怎么理...
在C语言中,函数的形参和实参可以占同一个存储单元,也可以占不...