地址是否是变量??

指针就是地址,地址就是指针,地址所指向的内容叫指针变量,那么地址(指针)是否是变量呢

地址只是一个数值,或者叫号码,
指针才是变量,实际上指针的值就是地址

和地址不同的是,指针的值除了值是地址值他还拥有类型信息。
指针可以是常量,亦可以是变量,地址都是常量(是一个数值)
函数调用时,形参是指针的,可以传入一个地址(要类型相同或兼容)。
指针赋值时,可以赋给它一个地址,变量地址(&变量名),数组首地址(数组名)
地址不可以赋值,指针变量可以,就是说指针的值可以变化,地址只能存取其中的值。
指针除了可以像地址那样改变指针的值所代表地址中的值之外。
还可以改变自己的值,也就是换个地址,指向一个新地址。
通常指针的值只是些变量的地址,或者是数组的首地址
另外函数指针的值是函数的地址(可以调用函数)

int a[20], x=0;
int *p=a,*q=&x;

a 是整型数组名,值是这个整型数组的首地址,同时是这个整型数组元素变量a[0]的地址。
&a[0]就是a 的值,&a[1] 就是a+1

x 整型变量,值为0,没初始化,也没赋值时不确定,这个是初始化了的值为0

每一个变量都有一个地址,x的地址是&x
地址只是个整数,指针是有类型的地址,由于我们几乎不用 0X40000这样的地址常数(整数)
而是用 &x,&a[0],a这样的数组名以及变量名前面加&这个取址运算符,实际上获得的是拥有类型信息的地址,也就是常量指针

而真正的地址是诸如0X40000这样的整型常数;
所以有时会不太明白指针和地址的区别!
真正使用地址的时候少,通常都是和指针一起用的.
和表示地址的整数不同,指针的加减运算,整数加减的结果不同
p=a;p++;p=&a[1]了,也就是p=a+1了;p地址值加了一个整型变量的长度

假设p 的值为0X200,整型长度为4,p 的值为0X204了。
p=a;p++; p 的值从0X200变成0X204了。

p=a;p+=1; p 的值从0X200变成0X204了。

p=a;p=p+1; p 的值从0X200变成0X204了。

指针相减p-a =1;

地址相减(就是整数相减)0X204-0X200=4 整型变量的长度

x=0;x=x+1;变量x的值x=1了。
x=0;x+=1;变量x的值x=1了。
x=0;x++;变量x的值x=1了。

另外指针除了值外,他自己也有地址
因为他是一个变量,或者是一个命名的常量
不是一个像 123456 这样的数值常量
enum 常量和 宏定义常量是数值常量,很多时候并没有地址。
而指针无论是变量,还是常量,只要有个名字,都会安排有一个地址的。
所以除了定义时 多用了*号,指针其他时候是和有名字的普通变量常量一样的。
指针比普通变量常量多了一个功能,可以存取,所指对象的值(即指针值所代表地址中的值)
如此而已!
PS:
在Dos 时代
字符直接写屏
地址是0xB000:0000
图形直接写屏地址是0xA000:0000
所以会出现
char far *p=(char far*)=0xA0000000;这样的写法;
0xA0000000是显存的地址
char far *p远指针(32位值用整数表示)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-25
给你举个简单的例子:
int num=10;
这句话里面的num就是变量,10是常量。

对于指针:
int *p=0x10293243;
这里的p是个变量,后面的地址则是常量。

你说的:指针是地址是对的,地址是指针则不对,地址所指向的内容应该是保存的数据,不是指针变量,地址是常量。本回答被网友采纳
第2个回答  2013-01-25
不太一样喔...

所谓指针,乃是变量。其内容物,为一地址数据。
int *p; //宣告一变量p,其内容物为一地址,该地址指向的目标为一int型态数据。
//也就是告知编译器,以int方式,去操作,地址内之数据。
int a = 10;//宣告一变量a,此a可代表一地址。其内容物为一数据10,该数据为int型态。
p = &a; //宣告p变量之内容物,为a变量所代表之地址数据。
*p = 11; //操作a变量地址内之内容,设定a变量(地址)之内容物为11。本回答被网友采纳
第3个回答  2013-02-05
地址是变量所在的存储单元!变量的基本类型就九种
别按着这种问题不放!你只需要理解 指针变量中存储的内容是地址就行了!
第4个回答  2013-01-25
地址怎么可能是变量呢?物理内存肯定是客观的啊。要区分指针和地址,地址是固定的物理单元,而指针是用来储存这个物理单元地址的,也就是把这个物理地址值放在里面,指针既可以存放这个物理单元的地址,又可以存放其他物理单元的地址。