指针交换问题,给一个整型int temp赋*a,再执行*b=temp这样可以吗?

如题,如果可以的话,那么temp被赋值之后应该为一个常数,而常数又对指针变量赋值?

4个回答

int temp=*a
*b=temp
这样 b变量指向的位置的值就变成了变量指向的位置的值

Bigheadzjh
Bigheadzjh 假设a=&b;b=10; 那么执行语句后 temp的值为10 *b=temp等于*b=10 那为什么 int main {int *b; *b=100; }这样是不行的呢
大约 2 年之前 回复

强转一下
int temp;
int *a;
a = (int *)temp;
或者temp = (int)a;

因为int一般为四个字节(也有2个字节的),指针一定为四个字节
有的编译器会警告,所以严谨点可以:a = (unsigned long int *)temp;

题主的意思是 a b 的定义是:
const int *a = ...;
const int *b = ...;
吧?
a b 都是指向常数的指针(const int *)的话,就不能用 int 或者 int * 来交换了,只能用 const int * 来交换。

const int *tmp = a;
a = b;
b = tmp;
交换 a b 指向的方向。

a是一个地址,*a是解指针,指针解完后是一个值,so你的temp是放在a地址中的值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问