关于C语言指针的问题
struct film{
char title[TSIZE];
int rating;
};
typedef struct film Item;
typedef struct node{
Item item;
struct node* next;
}Node;
typedef Node* List;
在初始化 List movies 时,书上说这只是建立了一个列表,而不是一个指向节点的指针,该如何理解?本质上,movies就是一个指向node的结构指针吧?
后面的函数
void InitializeList(List* plist)
{
*plist = NULL;
}
bool ListIsEmpty(const List* plist)
{
if(*plist == NULL)
return ture;
else
return false;
}
为什么第一个函数使用movies的指针InitializeList(&movies);
第二个函数直接使用movies参数ListIsEmpty(movies);
在运行时两个函数内部的(*plist)的值应该是不不同的吧,为什么第一个函数初始化后第二个函数可以进行比较判断?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
回复
我说的是
@乌鸦低语 你修改的是正确的.
回复
貌似是书错了……c primer plus 这可是知名图书啊……
回复
3Q
回复
能让人掌握就行,哈哈
回复
不要管书上怎么说,C语言函数参数永远都是值传递的。
要么ListIsEmpty定义错了,应该是bool ListIsEmpty(const List plist)
要么使用ListIsEmpty的方式错了,应该是ListIsEmpty(&movies)
你的问题其实就是你提到的“列表“具体是什么