读书人

内存储器位置和地址有什么区别?不是一

发布时间: 2012-10-13 11:38:17 作者: rapoo

内存位置和地址有什么区别?不是一样的吗?
#include <stdio.h>
#define SIZE 5
int *odd(void);
int main()
{
int numbers[SIZE];
int x;
&numbers = odds();
for(x=0; x<SIZE; x++)
printf("Element #%d = %d\n", x, numbers[x]);
return(0);
}

int *odds(void)
{
int y[SIZE];
int x;
for(x=0; x<SIZE; x++)
y[x] = 2*x+1;
return(y)
}



以上代码的问题主要是&numbers = odds();

odds()返回的是内存位置(memory location),而&numbers获取地址(address)为什么不可以呢

请教,内存位置不就是地址吗?



[解决办法]
&number取的是地址,比如说是0xaabbccdd,odds()返回的地址,比如说是0x11223344;
你这样直接用0xaabbccdd = 0x11223344,你用一个常量赋值给另一个常量可以吗?

还有就是不能return调用函数里面的变量,oadds里面y的值,因为这个数组是创建在栈上的,在函数结束后会自动释放。

[解决办法]
不一样的,打个比方吧,把计算机中内存看作一个地球上的空间,内存地址就是地球上的某一个较大位置,如(中国、美国……),而地址就像你的家庭地址(如北京、上海……)。
在计算机中,通常我们可以知道地址,但很难知道内存地址,因为内存地址是由计算机分配的。
而地址是由计算机分配一块内存后,在其中的某一个位置。

读书人网 >C语言

热点推荐