首页 > C > 指针 阅读:57,774

&与*运算符

我们把&叫做取址运算符,用来获取某个变量的地址,比如:

int i = 1;

int *p = &i;//p is reference of i, 这里把p当做是对i的一个引用(reference)

我们又把*叫做解引用(dereference)运算符,与&运算符互为逆运算。比如:

printf(*p is:%d,i is %d\n, *p, i);// *p is dereference for i *p equals i*p代表的就是i

*p += 1;//p所指向的地址的内存(i)的值加1

printf("*p is:%d,i is %d\n", *p, i);

这里*p代表的就是i

 

*p中,p必须是有效的地址,否则会引发程序崩溃。比如:

int *p = NULL;

*p = 0;//此时,pNULL地址,会引发程序异常

 

图解指针*&的含义:

char i,j,*p1,*p2;

i='a';

j='b';

p1=&i;

p2=&j;//1所示,p1指向ip2指向j

*p2=*p1;//2所示,把i的值赋值给了j。因为*p2j*p1i,所以等价为j=i;

p2=p1;//3所示,把p1的值,赋值给p2,因此,p2中存放的也是i的地址,所以p2指向了i;

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注