初学C语言,*是取指针目标运算符,&是取地址运算符,它们有什么区别? 通俗一点 谢谢

2024-10-30 22:23:58
推荐回答(3个)
回答1:

&是取地址运算 对任意变量都可以进行取地址操作
如:
int i , *pi ;
pi=&i ;
int **ppi ;
ppi=&pi ;
*是取指针目标运算符 其后跟随的必须是指针类变量
如:
int i,*pi ;
pi=&i ;
*pi = 10 ; //相当于 i=10 ;
*i=10; 这样写就是错的,i不是指针类变量,所以 *i操作就是错误的语句。

回答2:

例如你申请一个变量,变量有他的值和他的存储空间,*是根据变量存储空间取出变量的值,如int *p = 4;*p就等于4,&是根据变量取出其存储空间的地址,如 int p = 4,&p就是p所在的空间

回答3:

这两个运算符功能是互逆的
比如现在有int型变量a,a值是100,a在内存中的地址是0x012FA7A6

* 就是给定地址求值,即已知0x012FA7A6,求出对应值100
& 就是给定变量,求地址,即要得到对应a的地址