C++ 通过数组移动指针-通过引用传递还是增量传递?

C++ 通过数组移动指针-通过引用传递还是增量传递?,c++,arrays,pointers,pass-by-reference,increment,C++,Arrays,Pointers,Pass By Reference,Increment,我完全不知道以下两个例子有什么区别: void function(int *p) { p++; } int main() { int values[] = {1,2,3}; int *p = values; function(p); cout << *p; return 0; } void函数(int*p){ p++; } int main(){ int值[]={1,2,3}; int*p=数值; 功能(p); 这里的问题是 void function(int *p)

我完全不知道以下两个例子有什么区别:

void function(int *p) {

p++;

}

int main() {

int values[] = {1,2,3};
int *p = values;
function(p);

cout << *p;

return 0;
}
void函数(int*p){
p++;
}
int main(){
int值[]={1,2,3};
int*p=数值;
功能(p);
这里的问题是

void function(int *p) {
    p++;
}
正在使用按值传递-不按引用传递。由于指针是按值传递的,因此对指针本身所做的任何更改都不会反映在调用站点中。如果需要修改指针指向的位置,则需要按引用传递,如

void function(int*& p) {
    p++;
}
现在,当您递增时,它将像在第二个示例中一样指向第二个元素。

这里的问题是

void function(int *p) {
    p++;
}
正在使用按值传递-不按引用传递。由于指针是按值传递的,因此对指针本身所做的任何更改都不会反映在调用站点中。如果需要修改指针指向的位置,则需要按引用传递,如

void function(int*& p) {
    p++;
}
现在,当您递增时,它将像在第二个示例中一样指向第二个元素。

在本示例中

void function(int *p) {

p++;

}

int main() {

int values[] = {1,2,3};
int *p = values;
function(p);

cout << *p;

return 0;
}
void函数(int*p){
p++;
}
int main(){
int值[]={1,2,3};
int*p=数值;
功能(p);
在这个例子中cout

void function(int *p) {

p++;

}

int main() {

int values[] = {1,2,3};
int *p = values;
function(p);

cout << *p;

return 0;
}
void函数(int*p){
p++;
}
int main(){
int值[]={1,2,3};
int*p=数值;
功能(p);

cout在第一种情况下,地址的值通过值传递

函数(p)==>void函数(int*p){


右边的“p”是一个局部变量。因此对指针的任何修改只在函数内部可见。

在第一种情况下,地址的值是按值传递的

函数(p)==>void函数(int*p){


右边的“p”是一个局部变量。因此对指针的任何修改都只在函数内部可见。

要更清楚地看到发生了什么,请将
void函数(int*p){
更改为
void函数(int*argument){< /Cord> >当您执行“代码>参数++<代码> >时,调用方中的<代码> P<代码>变量不受影响。C++总是通过值传递。要获得引用,必须传递引用(例如指针)。按值。在您的情况下,您需要引用或指向该指针的指针才能在函数内部更改它。要更清楚地了解发生了什么,请将
void函数(int*p){
更改为
void函数(int*argument){< /Cord> >当您执行“代码>参数++<代码> >时,调用方中的<代码> P<代码>变量不受影响。C++总是通过值传递。要获得引用,必须传递引用(例如指针)。按值。在您的情况下,您需要一个指向该指针的引用或指针来在函数中更改它。感谢您向我展示了一种替代方法。我从未见过这样做,我们也没有被教过。没问题。很高兴提供帮助。感谢您向我展示了一种替代方法。我从未见过这样做,我们不是ta好的,没问题,很乐意帮忙。