引用的指针的解引用?

xt2389888 2011-10-25 04:40:50

#include<stdio.h>
#include<malloc.h>
typedef int ElemType;


typedef struct linknode
{
ElemType data; //数据域
struct linknode *next; //指针域
}LiStack; //链栈类型的定义

//初始化栈
void InitStack(LiStack *&s) /////cao
{
s=(LiStack *)malloc(sizeof(LiStack));
s->next=NULL;
}


int main()
{
LiStack *s;
int e;
InitStack(s);
}


在网上看到的代码,如果我没理解错,【*&s】——引用的指针解引用?第一次见这样用,难道是我out了?
...全文
416 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfvmario 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lovey2010 的回复:]

C语言中没有引用,有些比较垃圾的书,在C语言版的数据结构中还有引用,真是误人子弟。
[/Quote]
应该说只是C89没有吧
xt2389888 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lovey2010 的回复:]
C语言中没有引用,有些比较垃圾的书,在C语言版的数据结构中还有引用,真是误人子弟。
[/Quote]
这不是书里的,是在网上看到的。
Lovey2010 2011-10-25
  • 打赏
  • 举报
回复
C语言中没有引用,有些比较垃圾的书,在C语言版的数据结构中还有引用,真是误人子弟。
阿尼小码 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mymixing 的回复:]
这句话这样看就比较清晰了。
char* char& s
[/Quote]
这样看更头大,这样看才好理解嘛
char*(&s)
&s是个指针也就是说S是个指针 当&s=s1时 s就是对s1指针的引用
别这样理解char**
梦境传说 2011-10-25
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
wintree 2011-10-25
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
pathuang68 2011-10-25
  • 打赏
  • 举报
回复
引用的指针?貌似说法不妥。

指针可以有引用,引用貌似无指针。
赵4老师 2011-10-25
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
xt2389888 2011-10-25
  • 打赏
  • 举报
回复
*&s和*s不就是一样的值么,那以后我不用*s了,函数参数可以用*s的情况下我都用*&s,这样看起来才够酷
hxyairtaobao 2011-10-25
  • 打赏
  • 举报
回复
这个没有什么问题吧?
很常见的指针引用哇
小木 2011-10-25
  • 打赏
  • 举报
回复
LiStack* &s; 是结构体指针的引用。一般定义结构体不是还要定义一个指针类型么,
typedef struct linknode
{
ElemType data; //数据域
struct linknode *next; //指针域
}LiStack, *pStack; //链栈类型的定义
phoeni_xin 2011-10-25
  • 打赏
  • 举报
回复
看看。
恨天低 2011-10-25
  • 打赏
  • 举报
回复
对于这种问题,调试的时候,看变量窗口变量的值就可以了。你可以看到main里面,InitStack里面

指针s的值没改变。
Enter空格 2011-10-25
  • 打赏
  • 举报
回复
这句话这样看就比较清晰了。
char* char& s
恨天低 2011-10-25
  • 打赏
  • 举报
回复
指针的引用,这种用法很常见的,没什么
大海啊全是水 2011-10-25
  • 打赏
  • 举报
回复
指针的引用。。。
Enter空格 2011-10-25
  • 打赏
  • 举报
回复
没在IDE上试。
不过这代码的效果应该同 LiStack **s
目的是操纵传进来的指针。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧