网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月21日漏签0天
c语言吧 关注:801,919贴子:4,377,871
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 13回复贴,共1页
<<返回c语言吧
>0< 加载中...

关于链表作为函数参数传递的疑问

  • 只看楼主
  • 收藏

  • 回复
  • 愫.
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
小白楼主最近做作业,看别人代码看晕掉了。
具体表现为对链表作为函数传递的时候到底怎么做感到迷惑
有的会用&(见图1)
有的会用*(见图2)
我觉得,List和linklist是一样的啊,为什么有的用&有的用*?
而且第二个(即用*的这个),我用&还会报错,很晕这个到底是怎么用的。
然后用&或*,链表指针的定义就必须和上面例子一样吗(比如用*就必须要typedef struct LNode *List;,而不是像&那样在结构体后面命名)?
它们分别适用于什么情况呢?
所以就是,到底什么时候用&什么时候用*呢?
然后最近做到了栈(见图3)
这位更是
按理说,栈是特殊的链表
结果&和*都没有,已经晕头转向了
所以这个到底是怎么弄呢?有没有大佬解答一下呀?
我也在网上搜索过,有的看不懂有的和我想问的不一样,所以如果有相关的文章也可以发一下做参考呀(也可能直接把小白的提问全部解答了)(那就太好啦),谢谢谢谢


  • 愫.
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
搞错了。。。最后图三是队列,那队列在这个是用链表实现的吗?这个为什么没用&或*?


2026-07-21 22:04:17
广告
不感兴趣
开通SVIP免广告
  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你是对参数传递的基本方式不熟悉
1.传值 void foo(int p);
2.传地址 void foo(int *p);
3.传引用 void foo(int &p);
传引用等价于传指针后再解引用,因为C语言没有引用。
void foo(int *p)
{
*p = 5;
}
int main()
{
int q = 3;
foo(&q);
// now q = 5
}
等价于
void foo(int &p)
{
p = 5;
}
int main()
{
int q = 3;
foo(q);
// now q = 5
}


  • 降谷千纮
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
建议先纯C不要管引用,就用纯指针写,搞明白在去体会引用。
引用其实本质也是操作指针,只不过C++里面用引用更安全。这里可以先理解成两个没区别,就是写法不一样。


  • 欢喜过大年
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
函数头下断,打开内存窗口,看参数地址,看地址里的内容,明白了内存里的数据是什么意思,你就会发现你的C能力已经超过很多人了。学C,C++结合内存来看来学,各种数据结构又怎样,学明白了就是内存里有迹可循的数据集合


  • 香菜味包子
  • 团子家族
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
viod create(list& l);这种是C++的写法,C语言不要管这种写法,等效是传指针再解引用,但是C++基本不会这样写"create"函数


  • 香菜味包子
  • 团子家族
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第三个图其实是一个数组模拟的队列,并不是栈,先学基本语法在学数据结构吧,所有基础的数据结构(这里指的是表栈堆图这种),都可以使用数组模拟的,另外只学了C语言看教程一定要看纯C版本的
数组版本的栈可以是类似这样的:
int arr[10]; // 最大容量为10的栈
int size = 0; // 栈现在的大小
//压栈
void push(int val)
{
if(size == 10)
{
return;
}
arr[size++] = val;
}
// 弹栈
int pop()
{
if(size == 0)
{
return ;
}
size--;
}
//栈顶值
int top()
{
if(size == 0)
{
return ;
}
return arr[size-1];
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示