• 指针的问题


    我们都知道指针是用来操作内存空间的,我们可以简单的拿来改变某个变量的值

    如:我们定义一个int a = 5;

    然后定义一个指针int *p;

    将change(&a);利用这个调用函数change();

    用函数int change(int *p){*p = 10;return 1;}

    输出结果会是:a = 10;

    这就是利用一个简单的指针来改变了内存空间的值将5 改成了10,这就进一步说明指针是用来改变内存空间的值的。

    接下来我们讨论*p,与**p的问题

    很容易理解:*p是指针,**p是指针的指针嘛,是的,但我们要知道,第一个*P是拿来改变某一个内存空间的值的

    如刚讲的内存空间a一样,而**P 是改变指针的指针的内存空间的,即改变指针的指针的指向问题,因为改变的是

    该指针的的内存的值,即,指针的指向问题就改变了,当我们申请内存空间的时候会遇到两种情况:

    *head:

    head = (SLNode*)malloc(sizeof(SLNode));

    **head:

    *head = (SLNode*)malloc(sizeof(SLNode));

    这两种情况不一样,第一种情况,你若使用在初始化函数中,你需要return head;这样你才能获得该地址;而

    第二种情况就不用了因为你操作的是*head这个地址空间,改变了其值,使其指向改变,但你仍然知道你传入

    的地址,这样你就可以继续找到,操作该空间了。

    下面举了一个例子:

    #include <iostream>
    using namespace std;
    int change(int **p,int *p2){
    *p = p2;
    }

    int main(){
    int a = 5;
    int b = 10;
    int *p1 ;
    p1 = &a;
    cout<<"改变前:"<<*p1<<endl;
    change(&p1,&b);
    cout<<"改变后:"<<*p1<<endl;
    return 0;
    }

  • 相关阅读:
    Java多线程总结
    Linux命令总结
    Java笔记
    JDK7和JDK8一些重要新特性
    第八周(11.04-11.10)----每周报告
    第八周(11.04-11.10)----结对项目----逆波兰
    第八周(11.04-11.10)----个人作业----历年学生作品点评
    第七周PSP(10.27-11.03)
    第七周(10.27-11.03)----补交第六周(10.20-26)每周例行报告
    个人项目----词频统计WEB(部分功能)
  • 原文地址:https://www.cnblogs.com/qpxv/p/3733999.html
Copyright © 2020-2023  润新知