翻了大半天的墙,论坛找一圈,勉勉强强对这个pointer以及pointer to pointer有了一点点的了解,反正我就是这么理解的,权当是对的了
哎,组里都不在,好无聊啊,想喝酒!
pointer的用途
其实就是你给一个变量一个数,一串字符巴拉巴拉的,存这个变量里了,你用的时候是直接调用的,对吧?看不懂直接回去重新学去吧!
但是呢,其实你用变量的时候,变量会跑回家里,把这个值取出来让你用
pointer的意义就在于,你调用的时候,不是找人变量拿了,你直接怼人家里去自己取去了。
pointers to pointers的用途
问题来了,你可以自己写两个function试一下,在一号function里改变了变量,然后在二号function里去用,看数会不会变,肯定不会变,这就是局部变量。
pointer to pointer 的用处就是可以在函数之间可以改变变量,原理是啥,我不知道。
下面po上来一个例子,自己去试试就知道了:
#include <iostream>
#include "ss.h"
using namespace std;
int main(){
// Variable
int a = 1;
int b = 2;
int c = 3;
// Pointers
int * d = &a;
int * e = &b;
int * f = &c;
// Pointer To Pointer
int ** pp1 = &d;
int ** pp2 = &e;
int ** pp3 = &f;
// Begin!
change_v(d, b);
print_v_p(a,b,c,d,e,f);
return 0;
}
//
// Created by yms on 2021/7/12.
//
using namespace std;
#ifndef TEST_SS_H
#define TEST_SS_H
int print_v_p(int v1, int v2, int v3, int *p1, int *p2, int * p3){
cout << v1 << endl;
cout << v2 << endl;
cout << v3 << endl;
cout << "//////////\n";
cout << *p1 << endl;
cout << *p2 << endl;
cout << *p3 << endl;
cout << "//////////\n";
cout << p1 << endl;
cout << p2 << endl;
cout << p3 << endl;
return 1;
}
int print_v_pp(int v1, int v2, int v3, int ** pp1, int ** pp2, int ** pp3){
cout << v1 <<"\t" << v2 << "\t" << v3 << endl;
cout << **pp1 <<endl;
cout << **pp2 <<endl;
cout << **pp3 <<endl;
return 0;
}
void change_v(int * t, int x){
*t = x;
}
#endif //TEST_SS_H
原文:https://www.cnblogs.com/chuanshi10247/p/15004168.html