c - 这两种指针方法的区别

标签 c pointers

解码1:

void decode1(int *xp, int *yp, int *zp){
 int x = *xp;
 int y = *yp; 
 int z = *zp;
 xp = &z;
 yp = &x;
 zp = &y;
}

解码2:

 void decode2(int *xp, int *yp, int *zp){
 int x = *xp;
 int y = *yp; 
 int z = *zp;
 *xp = z;
 *yp = x;
 *zp = y;
}

Decode1 会将指针更改为 z、x 和 y 的地址。 Decode2 将改为更改指针地址处的值。这两种方法可以互换吗?有没有一种情况比另一种更正确?

最佳答案

Decode2 是正确的程序。在 Decode1 中,调用栈结束后,你在 xp,yp,zp 中分配的地址将消失。

关于c - 这两种指针方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21668007/

相关文章:

c++ - system() 到 c++ 而不调用 cmd.exe

c# - LRESULT、WPARAM 和 LPARAM 是什么意思?

c++ - 将多个 vector 转换为 void *

c - 如何访问声明为结构类型的指针变量的值

c - 什么语言允许我与操作系统的内核交互

在 C 中创建一个数组来保存扑克牌?

c - _mm_load_ps1 是否要求其参数对齐?

c - 将单个字符写入具有 8MHz AVR 的 LCD 16x2 显示器需要多长时间

c - 使指针指向任何内容的最佳方法

c - 带有 char 指针的字符串