一个小疑问
c语言吧
全部回复
仅看楼主
level 3
冲田是我哒💨
楼主
int *ptr
&*ptr或者*&ptr和ptr是一样的么
2023年09月05日 01点09分
1
吧务
level 14
▫XeO2▫
*&ptr和ptr一样;&*ptr和前面两个不一样,它不是左值
2023年09月05日 01点09分
2
gjkhl
这三个都是表示地址吧
2023年09月05日 02点09分
冲田是我哒💨
了解了解
2023年09月05日 02点09分
GTA小鸡
@gjkhl
意思是&*ptr = NULL这种表达式不合法
2023年09月05日 03点09分
level 6
就麻麻圆
ptr指向一个地址,假设他指向int a,自己有个地址,&*ptr先解引用再取地址,就是a的地址,在值上是就是ptr;*&ptr先取地址再解引用,就是ptr自己
2023年09月05日 02点09分
3
▫XeO2▫
&*ptr没有先解引用再取地址,它的值就是ptr的非左值版本,就算ptr=NULL这种写法仍然成立
2023年09月05日 04点09分
level 1
芳年华月不负期望
引用的话*&ptr和&*ptr和ptr所表示的是同一个地址。假如说变量a的地址放在指针变量ptr中,*&ptr指的是ptr的地址所指向的对象,当然也就是ptr本身了,而&*ptr则是ptr所指向对象的地址,ptr所指向的对象是a, 所以&*ptr也就是a的地址,放在ptr中。但是在编译时*&ptr和ptr都可以视为指针变量作为左值,&*ptr是一个具体的地址常量不能作为左值
2023年09月05日 04点09分
4
1