内存位置和地址有什么区别?不是一样的吗?
#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的值,因为这个数组是创建在栈上的,在函数结束后会自动释放。
[解决办法]
不一样的,打个比方吧,把计算机中内存看作一个地球上的空间,内存地址就是地球上的某一个较大位置,如(中国、美国……),而地址就像你的家庭地址(如北京、上海……)。
在计算机中,通常我们可以知道地址,但很难知道内存地址,因为内存地址是由计算机分配的。
而地址是由计算机分配一块内存后,在其中的某一个位置。