C:将指针切换到整数
我想写一个方法,它使用两个指向int的指针并更改它们指向的值。比如:C:将指针切换到整数,c,C,我想写一个方法,它使用两个指向int的指针并更改它们指向的值。比如: int main() { int a = 3; int b = 1; change(&a, &b); return 0; } void change(int *a, int *b) { int t = a; *a = *b; *b = *t; } 我在理解如何保存a的副本并稍后从b指向它时遇到问题。您可以这样做: int temp = *a; // r
int main() {
int a = 3;
int b = 1;
change(&a, &b);
return 0;
}
void change(int *a, int *b) {
int t = a;
*a = *b;
*b = *t;
}
我在理解如何保存a
的副本并稍后从b
指向它时遇到问题。您可以这样做:
int temp = *a; // remember actual value "a" points to
*a = *b; // copy value "b" points to onto value "a" points to (will overwrite that value, but we have a copy in "temp")
*b = temp; // now copy value "a" originally pointed to onto value "b" points to
你是这样做的:
int temp = *a; // remember actual value "a" points to
*a = *b; // copy value "b" points to onto value "a" points to (will overwrite that value, but we have a copy in "temp")
*b = temp; // now copy value "a" originally pointed to onto value "b" points to
更改的代码应为:
void change(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
请注意,要访问该值,您必须始终使用*X
,因此首先t
保存a
指向的值,依此类推。更改的代码应为:
void change(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
请注意,要访问该值,您必须始终使用*X
,因此首先t
保存a
指向的值,依此类推。取消引用指针,这类似于返回指向的变量。因此,将值存储到解引用指针将导致该值存储到指向的内存中。因此,只要取消对两个指针的引用并专门处理数字,就不需要更改指针本身
void change(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
实际上,因为您对函数的参数使用了按值调用,所以在“change”中交换指针中的内存地址对main中的变量没有任何影响。该*取消引用指针,这就像返回指向的变量一样。因此,将值存储到解引用指针将导致该值存储到指向的内存中。因此,只要取消对两个指针的引用并专门处理数字,就不需要更改指针本身
void change(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
实际上,因为您对函数的参数使用了按值调用,所以在“change”中交换指针中的内存地址对main中的变量没有任何影响。in
void change(int *a, int *b) {
int t = a;
*a = *b;
*b = *t;
}
难道你没有注意到a
的类型是int*
,而t
的类型是int
,所以你不能只将a
分配给t
void change(int *a, int *b) {
int t = a;
*a = *b;
*b = *t;
}
你没有注意到a
的类型是int*
,而t
的类型是int
,所以你不能只将a
分配给t