为什么我运行以下代码时输出3而不是5?我的印象是传递指向函数的指针会改变原始变量。
#include <iostream>
using namespace std;
void addTwo(int* b){
b +=2;
}
int main() {
int a = 3;
int* ptr = &a;
addTwo(ptr);
cout<<*ptr<<endl;
return 0;
}
答案 0 :(得分:3)
您需要在b指向的内容中添加两个。你正在做的是递增指针。你需要增加* b:
#include <iostream>
using namespace std;
void addTwo(int* b){
*b +=2;
}
int main() {
int a = 3;
int* ptr = &a;
addTwo(ptr);
cout<<*ptr<<endl;
return 0;
}
答案 1 :(得分:0)
#include <iostream>
using namespace std;
void addTwo(int& b){
b +=2;
}
int main() {
int a = 3;
addTwo(a);
cout<<a<<endl;
return 0;
}
首先,您应该使用C ++中的引用而不是指针。从长远来看,它确实更容易。
#include <iostream>
using namespace std;
void addTwo(int* b){
*b +=2;
}
int main() {
int a = 3;
int* ptr = &a;
addTwo(ptr);
cout<<*ptr<<endl;
return 0;
}
第二件事,你只是忘了addTwo()中的*,递增指针地址而不是内容本身。