本人是C语言菜鸟,大神求打救,简述一下什么是指针,什么是的地址,以下题目的意思是什么?

1、 变量i的值为3,i的地址为2000,若欲使指针变量p指向变量i,则下列赋值正确的是( D )
A)&i=3; B)*p=3; C)*p=2000; D)p=&i;
为什么选D吖?

指针是地址,指针变量是存储地址的变量。
一个变量的地址称为该变量的“指针”。
内存的每个存储单元都是有编码的,每个编码都不同,这些编码称为地址。
例如:int i=3;
int是类型 告诉系统需要的存储单元。假如系统分配了编码为2000的地址给i,日后在调用i的时候实际上就是通过i找到地址为2000的存储单元,然后调用里面的内容。
定义的指针变量的时候一般形式是:
类型名 *指针变量名

假如有:
int i,k,j;
double a,b,c;
这时想要指向这些变量,就要如下定义:
int *p_i;
p_i=&i; //&是取地址运算符。&i就是变量i的地址。
double *p_d;
p_d=&a;

你想指向的变量是什么类型,你定义的指针就要是什么类型。
另外也可以在定义指针的时候就赋值,如:
int *p_i=&i; (这和*p=&i是不一样的,p是指针变量,*p是指向的地址的内容,定义时 int *p的*p是说p为指针变量的意思。)

A:把3赋值给i的地址,错误
B:把3赋值给p所指向的地址,指针变量p没有指向任何地址,为野指针。
C:在此赋值语句中,2000只是作为一个数值,不代表地址,所以同上。
D:将i的地址赋值给指针变量p
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-09
不太严谨地说:
指针,是变量,能储存一个地址
地址,是常量,一个16进制数。

理解好这点,这题不就会了
第2个回答  2013-01-09
p=&i代表p中存放i的地址。
指针就比如说是,你的门牌号为A,别人来找你,我说你在A室,他们在A室中就能找到你
*p是p指向的内存单元中的数据
第3个回答  2013-01-09
因为&是取地址符,取了i的地址,然后赋给了指针p,你可以把p看成门牌号一样的东西会好理解一点
第4个回答  2013-01-09
&i 是取i的地址,也就是2000,
p=&i; 意思是把i的地址赋给P,或者说P指向i的地址