在C语言中,地址与地址值有什么区别

请举一个例子。

mai()
{int *p,w;这里定义了一个整型指针跟数据.它们各被分配了一个存储单元,也就是地址,但是这个地址是不一定的,不可控制的.
w=9;在这里把9赋给了W,这时W的址地值就是9了.
p=&w;而在这里把W的地址赋给了指针变量P,这时P的地址值就是W的地址了.
简单的说,地址是系统自动赋给的,每一个数据都有一个唯一的地址,而地址值是由用户赋予的.是可控的.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-03-27
int a=0;
int *p;
p=&a;
系统给a分配一块内存,地址不一定,这个地址中保存了值0;
指针p保存了a的地址,你可以分别输出a和p看一下,a一定是0,但是p的值是不一定的。*p表示p保存的地址中保存的值就是0;注意*P和P的区别
第2个回答  2007-03-27
#include <stdio.h>

int main()
{
int a[2] = {121, 99};
int address = (long)&a + 4; // 地址值

int* p1 = a; // 变量a的地址假如是0x0012FF6C

int* p2 = (int*)address; // p2指向地址0x0012FF70
*p2 = 2007;

printf("*p1 = %d *p2 = %d", *p1, *p2);
printf("\np1 = 0x%X p2 = 0x%X", p1, p2);
}
相似回答