c语言中& *的用法

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:31:40
C语言中
&可以取变量的地址;
指针*也可以取地址;

两者的异同不是很清楚,
举例说明一下各自的用法和异同之处。
非常感谢
谢谢大家。

再问一下,哪有 vc编译器 使用教程下载,最好是视频的。

谢谢了

&可以取变量的地址
*按地址取值

int a=3,*b;

b=&a; /*a的地址给b*/
printf("%d",*b); /*显示3,因为b里面是a的地址,按地址b取值,得3*/

指针本身就是元素的地址,而指针(int *a)也可以看为一个实体,地址是&a,类型是指针的地址(指针的指针int**)
也就是说 & 取的是变量(或常量)本身的地址,而 指针 储存另个变量的地址

通常“&”被叫做引用或者符取地址,“*”叫做解引用符,他们俩是相反的过程
int i=1;
int * adr_i = &i; //将i的地址赋予int *型变量adr_i
//这里的adr_i的内容是一个内存地址,如0X0000DE56
printf("%d",*adr_i); //打印地址adr_i(0X0000DE56)所存储的变量内容

&是直接取变量的地址,而*这个运算符之用在指针变量前,它得到的是指针变量所指向的值。
打个比方说你要找人,用&它告诉你的是那个人的地址,而*就直接带你找到那个人(前提是知道地址,也就是*这个运算符之用在指针变量前)
看个例子吧
int main()
{
int a[10]={0};
int **p,*q,t;

p=a;q=&a[0];
printf("%d %d",*p,q);
}

简单明了的给你解释
&是取地址,也就是取内存的地址编码,但当前面有类型时表示引用:
int a;
int *P=NULL;
p=&a; //取地址
int &b=a; //引用

*表示取地址里面所存的内容,但前面有类型时说明是定义地址:
int a;
int *p=&a; or
int *p=0x12345678; //实际应用时是不允许自己指定物理地址的