*(int*)a与(int)*a区别
时间: 2024-08-20 17:01:11 浏览: 174
*(int*)a 和 (int)*a 在 C/C++ 中有不同的含义:
1. ***(int*)a**:
这个表达式是一个指针操作,它首先将变量 `a` 解析为指向整数的指针,然后通过解引用(*)获取其指向的值,并将其隐式转换为整数类型。这表示的是内存中的某个整数值。
2. **(int)*a**:
这里先将变量 `a` 解引用(*),得到一个整数值,然后再将这个整数值当作指针看待。这通常用于函数参数传递或返回值,比如当一个函数期望接收一个整数指针作为参数时,可以写成 `(int)*a` 的形式。
简而言之,第一个表达式强调的是按指针操作获取整数值,第二个表达式则可能是从整数变相地得到一个整数指针。两个表达式的适用场景略有不同,第一个在直接访问内存地址时常见,第二个在间接处理指针的时候出现。
阅读全文