C/C++教程

关于C++中指针,双指针的用途

本文主要是介绍关于C++中指针,双指针的用途,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

翻了大半天的墙,论坛找一圈,勉勉强强对这个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

这篇关于关于C++中指针,双指针的用途的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!