关于C语言: 初始化一个指向数组的指针变量为什么不需要&符号?

C语言中数组名就是第一个元素的地址,所以可以直接把它赋给一个指针,不需要取地址。

1  void InitBiTree(SqBiTree T)
2  { // 构造空二叉树T。因为T是数组名,故不需要&
3    int i;
4    for(i=0;i<MAX_TREE_SIZE;i++)
5      T[i]=Nil; // 初值为空(Nil在主程中定义)
6  }

上述初始化代码中T是一个数组名,也就代表了数组的首地址,是一个地址,就不需要取地址符。

如下边初始化就不一样

1  void InitString(HString &T)     
2   { // 初始化(产生空串)字符串T。
3     T.length=5;
4     T.ch="hhhhh";
5   }
6  

产生的字符串T是不是一个地址,所以需要加上取地址符,才能对字符串T进行初始化,改变它内部的值。如果不加的话,只是在这个函数在主函数执行时,在内存中分配另一段存储去存储,在函数执行完时,内存被分配会被收回,就没有改变原来的字符串的值。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。