C++ C++;函数调用中的指针表示
我最近在浏览谷歌的网站时,遇到了演示指针的问题C++ C++;函数调用中的指针表示,c++,pointers,C++,Pointers,我最近在浏览谷歌的网站时,遇到了演示指针的问题 void Unknown(int *p, int num); void HardToFollow(int *p, int q, int *num); void Unknown(int *p, int num) { int *q; q = # *p = *q + 2; num = 7; } void HardToFollow(int *p, int q, int *num) { *p = q + *num; *num
void Unknown(int *p, int num);
void HardToFollow(int *p, int q, int *num);
void Unknown(int *p, int num) {
int *q;
q = #
*p = *q + 2;
num = 7;
}
void HardToFollow(int *p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
Unknown(num, *p);
}
main() {
int *q;
int trouble[3];
trouble[0] = 1;
q = &trouble[1];
*q = 2;
trouble[2] = 3;
HardToFollow(q, trouble[0], &trouble[2]);
Unknown(&trouble[0], *q);
cout << *q << " " << trouble[0] << " " << trouble[2];
}
void未知(int*p,int num);
void hardtoollow(int*p,int q,int*num);
无效未知(int*p,int num){
int*q;
q=&num;
*p=*q+2;
num=7;
}
void hardtoollow(int*p,int q,int*num){
*p=q+*num;
*num=q;
num=p;
p=&q;
未知(num,*p);
}
main(){
int*q;
智力障碍[3];
故障[0]=1;
q=&麻烦[1];
*q=2;
故障[2]=3;
HardToFollow(q,麻烦[0],&麻烦[2]);
未知(&故障[0],*q);
cout因为函数未知中不使用主函数中的指针q
该函数仅与名为num的指针的值一起工作,因为在函数未知中,不与主函数中的指针q一起工作
该函数仅适用于名为num的指针的值。我添加了一些注释,以明确说明:
void HardToFollow(int *p, int q, int *num) {
/* this modifies the value pointed to by p */
*p = q + *num;
*num = q;
num = p;
/* this does not modify the original pointer */
p = &q;
Unknown(num, *p);
}
[…]
/* the memory address q points to is copied to the function scope */
HardToFollow(q, trouble[0], &trouble[2]);
我添加了一些注释,以明确说明:
void HardToFollow(int *p, int q, int *num) {
/* this modifies the value pointed to by p */
*p = q + *num;
*num = q;
num = p;
/* this does not modify the original pointer */
p = &q;
Unknown(num, *p);
}
[…]
/* the memory address q points to is copied to the function scope */
HardToFollow(q, trouble[0], &trouble[2]);
您不能通过传递值将main::q
传递给hardtoollow
函数来简单修改main::q
函数。因为您将q
作为传递值传递给它,所以在hardtoollow
中,您可以通过p
和p
本身修改q
指向poi的内容我不想做别的事
稍微修改示例将实现您所期望的:
void HardToFollow(int*& p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
//Unknown(num, *p); //forget about this for now
}
您不能通过传递值将main::q
传递给hardtoollow
函数来简单修改main::q
函数。因为您将q
作为传递值传递给它,所以在hardtoollow
中,您可以通过p
和p
本身修改q
指向poi的内容我不想做别的事
稍微修改示例将实现您所期望的:
void HardToFollow(int*& p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
//Unknown(num, *p); //forget about this for now
}
您在何处看到更改了q
指针的内容?q
指针不是“在此函数中称为p”。该函数有一个名为p
的指针,该指针以与q
指针相同的值开始。请注意,这些指针不是“c++”虽然C和C++指针大部分是用同样的方式来处理的,但它们不是同一个东西。C和C++是不同的语言;我们不能混合它们。在哪里你看到了一些改变了<代码> Q>代码>指针的东西?<代码> q>代码>指针不是“调用这个函数的P”。该函数有一个名为 P</C>的指针,其值与 Q> /Cuff>指针相同。注意这些不是“C++”,而是旧的普通C指针。@ IGORR。C++和C++指针在很大程度上以类似的方式起作用,它们不是同一个东西。C和C++是不同的语言;我们不混合它们。