C语言中 *与& 在指针及数组中的含义 望详细具体

如题所述

& 是取某个变量的地址
* 则是 &的逆运算,即取某个地址上存放的值

*********举个例子*********
一个整数int a = 2;
比如你再定义一个指针int *p = &a;
此时p就是a的地址,就是&a
*p就是取p地址上的值,就是a
*******************************

数组也是一样的
只不过数组名表示一个数的地址而已~

*********举个例子*********
有个数组a[10]
a[0]存放在地址为1000的地址位上
那么a就等于1000
因为在数组中a就等价于&a[0],即第一个元素的地址&a[0] = 1000
然后*号是&号的逆运算
而*a就是*&a[0],所以*与&一正一逆抵消,所以*a = *&a[0] = a[0]
*******************************
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-15
&有两个作用,其一是按位与,其二是取址。
*运算符比较复杂,即可以用在变量定义的语句中,也可以用在赋值、间接取值语句中,恰恰其所处的位置不同,从而用途、意义也不同,有时会使人混淆。

int i,iArr[5];
在scanf()函数中读入数组元素时,应该这样写
for(i = 0;i < 5;i++) scanf("%d",&iArr[i]);
也可以这样写
for(i = 0;i < 5;i++) scanf("%d",(iArr + i)); // VC++6.0环境下可以正常运行

for(i = 0;i < 5;i++) printf("%d ",iArr[i]); // 数组下标索引法
for(i = 0;i < 5;i++) printf("%d ",*(iArr + i)); // 间接取值法,或指针法
第2个回答  2011-08-15
&符号是取变量的地址,
*可用来申明指针变量类型,并且可以使用*取得该指针变量指向的地址中保存的内容
数组变量中保存的是下标为0的元素的地址 即: int nums[]={1,2,3}; nums==&nums[i] 返回true
第3个回答  2011-08-15
*p是取指针p处的数值。此时的p一般是一个指针变量。
&p是取变量p的内存地址。此时的p一般是一个数值变量(整形、字符型,结构)。
第4个回答  2011-08-15
一个表地址,一个表内容。。
相似回答