开发者社区> 问答> 正文

C语言指针传值和传地址问题

例1 struct SqList { ElemType *elem; int length; int listsize; }; SqList L; 函数定义:InitList(SqList &L) {..... L.length=0; ...... } 函数调用:InitList(L);

例2 函数定义:int ListEmpty(SqList L) 函数声明:ListEmpty(L); 问题例1与例2有什么区别?还有例1中函数可以定义为InitList(SqList *L)吗?如果可以该如何传值呢?

展开
收起
a123456678 2016-06-06 09:46:05 2010 0
1 条回答
写回答
取消 提交回答
  • 例1和例2中的变量L是如何定义的呢? 据我推测例1和例2应该是这样定义的: 例1:struct SqList l1; struct SqList *L = &l1;InitList(L); 例2:struct SqList L; ListEmpty(L); 在例1中,你传递给InitList的是一个指向类型为struct SqList变量的指针的副本(如果指针在内存中占据4个字节,那么在这里InitList函数接收了一个4个字节的指针)。 在例2中,你传递给ListEmpty的是一个类型为struct SqList的变量值的副本(如果指针占据4个字节,int 占据4个字节,那么在这里ListEmpty函数接收4+4+4=12字节的数据)。

    2019-07-17 19:27:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载