| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2984 人关注过本帖
标题:(具体看附上的代码,谢谢大神)为什么pRootNode指针得不到数据,明明调用函 ...
只看楼主 加入收藏
fengdawei91
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-2-9
结帖率:0
收藏
 问题点数:0 回复次数:8 
(具体看附上的代码,谢谢大神)为什么pRootNode指针得不到数据,明明调用函数传输函数参数的是地址,在函数内部开辟了地址,为什么还是传不出来?
为什么pRootNode指针得不到数据,明明调用函数传输函数参数的是地址,在函数内部开辟了地址,为什么还是传不出来?如果把函数void TestFunction(Node *pNode)修改成void TestFunction(Node *&pNode)就没问题了,关键是搞不通,问什么传入的是地址还是不能修改呢?求大神指点

#include "stdafx.h"
#include <stdlib.H>

typedef struct Node
{
    int pData;
    Node *pNext;
    Node *pPrevious;
    Node *pParent;
}Node;

void TestFunction(Node *pNode);

int main(int argc, char* argv[])
{
    Node *pRootNode=NULL;
    TestFunction(pRootNode);

    return 0;
}

void TestFunction(Node *pNode)
{
    pNode=(Node*)malloc(sizeof(Node));
    pNode->pData=1;
    pNode->pParent=NULL;
    pNode->pNext=NULL;
    pNode->pPrevious=NULL;
}
搜索更多相关主题的帖子: include 
2017-02-21 11:08
fengdawei91
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-2-9
收藏
得分:0 
明白了,自己总结一下,如果不对请大侠给指正。
首先,这是指针传递的例子。定义一个指针变量a,char *a="nihao";其中a存储的就是"nihao"的地址,*a="nihao"。但同时指针变量a又有自己的地址,可以采用&a得到a的地址。
pNode和pRootNode都是一个指针变量,存放的是其它变量的地址,但是pNode和pRootNode本身为变量,自己也有自己的地址。假如pRootNode="Test";则子函数中的pNode指向的是"Test",pNode和pRootNode是不同的指针(pNode和pRootNode是不同的地址),但他们存储的都是"Test"这个变量的地址,都指向"Test"这个变量,也就是说pNode=*pRootNode,pNode=pRootNode,但是&pNode!=&pRootNode,所以对pNode指针进行修改并不会影响pRootNode,只不过是pNode指针指向了别处。
2017-02-21 15:29
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
厉害,当初想明白这个可是花了我不少时间。

提一点小瑕疵

char *a="nihao"
*a = 'n';

带星号指针 值为 指针指向的数据类型,打印sizeof(*a)就知道了。


[fly]存在即是合理[/fly]
2017-02-21 17:44
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
嗯,要修改指针指向,则必须传指针的指针!
void TestFunction(Node **pNode);

TestFunction(&pRootNode);

void TestFunction(Node **pNode)
{
    *pNode=(Node*)malloc(sizeof(Node));
    (*pNode)->pData=1;
....下同
2017-02-21 19:08
fengdawei91
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-2-9
收藏
得分:0 
回复 3楼 azzbcc
恩恩,谢谢大神补充,嘿嘿
2017-02-21 21:57
fengdawei91
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-2-9
收藏
得分:0 
回复 4楼 xzlxzlxzl
恩恩,大神,指针的指针就是指针变量的地址吧?我感觉是这样的,双指针不太会用,我用的是引用,大神,这两个道理都差不多吧应该?
2017-02-21 21:59
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
回复 6楼 fengdawei91
指针的指针 是 一个保存了另一个保存了实际变量地址信息的指针的地址信息的指针
指针的引用 是 一个等价于另一个保存了实际变量地址信息的指针的变量别名   

char* a="Hell0";//a保存“Hello”的地址
char** b=&a;//b保存a的地址,是指针的指针,二级指针   
char*& c=a;//c是a的别名(对a的引用)

φ(゜▽゜*)♪
2017-02-25 22:58
fengdawei91
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-2-9
收藏
得分:0 
回复 7楼 书生牛犊
谢谢大侠,学习啦,哈哈
2017-02-27 17:00
droyoo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-4-12
收藏
得分:0 
让我想起第一次接触这个知识点的时候,哦,这个跟函数的嵌套有点异曲同工的意思
2017-04-17 00:11
快速回复:(具体看附上的代码,谢谢大神)为什么pRootNode指针得不到数据,明明 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017727 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved