C语言中指针变量赋值的问题

如51行的S_BSTreeNode *psNode = new S_BSTreeNode;
S_BSTreeNode *psNode 右边不是应该为一个地址吗,这里new返回难道返回一个地址,不对吧?
原完整代码出处:
http://blog.csdn.net/yuucyf/article/details/6338313

那你说new在这里返回什么呢?这句的意思是:右边的new S_BSTreeNode,就是在内存中分配一片类型为S_BSTreeNode的对象所占用的那么多的空间,并将这片空间的首单元地址赋给左边的S_BSTreeNode *型指针psNode!追问

嗯,应该是这样,谢谢了~
还有顺便问一下你,AddBSTreeNode(S_BSTreeNode * &psCurNode, int nValue)中用了一个S_BSTreeNode * &psCurNode,不清楚为什么是*& 而不是一个*,传入时不是一个地址吗?这一点很疑惑,非常感谢。

追答

前面的*是S_BSTreeNode的,表明后面的标识符是S_BSTreeNode *型指针;后面的&是psCurNode的,是说psCurNode是个引用。合起来的意思是函数AddBSTreeNode的第一个形式参数是S_BSTreeNode * 型指针的引用,或者说指向S_BSTreeNode类型对象的指针的引用。这样,传入的是地址不错,但这个传入的地址是主调函数中那个对应指针(地址)的“别名”,就可以通过AddBSTreeNode函数内部的操作来修改传入前的指针;而如果没有&,传入的同样是地址,但它只是一个指针拷贝,AddBSTreeNode函数中对指针本身的操作影响不了主调函数中的指针——注意这里说的是指针“本身”,而不是指针所指的目标;指针所指目标在两种情况下都可以在函数中修改,否则传指针就没有什么意义了……

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-11
关注此问题

c语言指针的赋值问题
在C语言中,指针的赋值是通过将变量的地址赋给指针变量来实现的。指针的基本概念 在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。这...

C语言指针的赋值问题
指针在用要注意初始化,例如:int *p;p为指针,地址是未知的,如果直接赋值 p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。可以int *p=&a;或者int *p;p=&a;然后再...

C语言指针赋值的问题。
1. n 是整型变量,p是指向整型变量的指针,q是指向指针的指针。也就是 n中存放整型数,p中存放整形数的地址,q中存放指针的地址。 * 在运算中的作用是代表取指针所指向的变量。所以选D 2.n1=0;p指向了n2,也就是通过*p能够取到n2的值;同理通过*q也能够取到n1的值。所以等价的是:选项A ...

c语言指针赋值问题
int a = 2;int *p = &a;\/\/p = 100; \/\/试图将指针本身的值修改为100,即令指针p指向内存地址100的位置,这是未定义行为*p = 100; \/\/将指针p指向的地址中的值修改为100,即将a的值修改为100

关于c语言指针的声明与赋值
在C语言中,指针是具有指向其他变量地址的能力的特殊类型变量。指针的声明与赋值是程序设计中常见且至关重要的操作。LZ提到的两种写法分别展示了指针声明与赋值的不同方式,它们在表面上看似等价,但实际用途与意义存在细微差异。首先,让我们回顾指针的声明与赋值的基本概念。声明一个指针变量,即是定义一个...

C语言中的指针为什么会改变变量的值?
pa=&a;句是将指针*pa指向变量a。pa存放的是a的地址,*pa其实就是a,可以理解为把a换了一个名字表示。*pa=20就是对a进行赋值操作,等于a=20;a的值当然改变了。看看指针的知识吧!

指针的赋值问题
C ’=‘ 是赋值,为了程序的稳定,我们默认只允许同类型的参数进行赋值(若不同类也会赋值,但是执行结果会出错)就是说,只允许,指针地址赋值给指针地址,变量值赋值给变量值。了解这些,就可以分析了:int *p,*q; q=p; \/\/对的,因为p,q都是指针,可以相互赋值 依据 A,C原则 int a,...

在C语言中能否直接给指针指向的数据赋值?为什么?
可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。这样才可以:int a,*p=&a;*p=7;实际上就是使a等于了7。

c语言指针赋值德问题
由于参数的临时性,去直接修改参数变量的值,无法实现将修改后的值返回给调用者,只能利用指针型变量的特点来实现:将它指向的变量(这个被指向的变量可以是调用者的变量)的值进行修改,相当于我们改变的是门牌号中的住户而非去修改门牌号。另外:*max=x; 是将x的值取出赋值给max指向的变量,这个指向的...

指针怎么进行赋值?
选项解析:选项A,指针变量需要赋值一个变量的地址,A选项中将x变量的地址赋值给指针变量pb,B选项不能将一个变量直接赋值给指针变量。选项C,C选项中的赋值语法是错误的,正确的赋值语法应该是和A选项相同。D选项的错误类型和C选项的类似,所以综合以上分析,正确的答案为A。

相似回答